Помощник контроллера файлов Symfony 4, как преобразовать двоичный файл в HTML-совместимый? - PullRequest
0 голосов
/ 31 августа 2018

Попытка получить изображение извне public. Я использовал file controller helper, но все еще не могу заставить его работать:

вот мой код, который возвращается как AJAX, чтобы обновить IMG SRC путь

$imgPATH = $this->getParameter('kernel.project_dir').'/uploads/user_profile_pictures/';

$ext = [".png", ".jpg", ".jpeg", ".gif"];

foreach ($ext as $x) {
    $imgPath = $this->getParameter('kernel.project_dir').'/uploads/user_profile_pictures/'.$usertoPic.$x;

    if (file_exists($imgPath)) {
       return $this->file($imgPath , 'userProfilePicture.png' , ResponseHeaderBag::DISPOSITION_INLINE);
    } 
}

Изображение найдено в PHP, но в браузере я получил следующее HTML; Я думаю, что это потому, что это двоичный файл? Как я могу преобразовать его в HTML-совместимый?

<img id="userIMG" src="�PNG��IHDR���S���S���lЬW���pHYs��.#��.#x�v��OiCCPPhotoshop ICC profile��xڝSgTS�=���BK���KoR RB���&amp;*!J�!��Q�EEȠ�����Q,������������{�kּ������&gt;�����H3Q5��B�������.@�$p��d!s�#��~&lt;&lt;+&quot;���x���M��0���B�\���t�8K��@z�B��@F���&amp;S���`�cb��P-�`" �������{�[�!���="" e�d�h;���v�e�x0�fk�9��-�0iwfh��������="" �0q��)�{�`�##x����f�w<�+��*��x��<�$9e�[-qww.(�i+6aa�@.�y�2�4�����������x����6��_-��"bb���ϫp@���t~��,="" ��;�m��%�h^�u��f�@�����w�p�~<<e���������j�b[a�w}�g�_�w�l�~<�����$�2]�g�����l�ϒ="" �b��g�����"�ib�x*�qq�d���2�"�b�)�%��d��,�="">

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Ваш браузер не может получить доступ к файлу, который не находится в папке public (для Symfony 4). В этом и заключается весь смысл наличия «публичного» каталога.

Что вы можете сделать - это напрямую передать файл в виде двоичного ответа с определенной ссылкой в ​​вашем приложении, как описано здесь: https://symfony.com/blog/new-in-symfony-3-2-file-controller-helper

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class ImgController extends Controller
{
    /**
     * @Route("/get-my-img")
     */
    public function getImg()
    {
        $basePath = $this->getParameter('kernel.root_dir').'/uploads/user_profile_pictures/';

        return $this->file($basePath . "img.png");
    }
}
0 голосов
/ 31 августа 2018
    // this should work quite simple:

    // site/public/css/style.css
    <link href="{{ asset('css/style.css') }}" rel="stylesheet" />

    // site/upload/favicon.ico
    <img src="{{ asset('../upload/favicon.ico') }}" />




    $target_dir = '/upload/favicon.ico'; // param in config

    $file = $this->getParameter('kernel.project_dir') . $target_dir;
    if(is_file($file)) dump('found: ' . $file);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...