Создание PDF с динамическим изображением из хранилищ в Laravel - PullRequest
0 голосов
/ 21 мая 2018

У меня проблема с просмотром и созданным контентом для создания PDF.В настоящее время я работаю с niklasravnsborg \ LaravelPdf (оболочкой для mPDF из-за проблемы с другим PDF-писателем, с которым я раньше работал), которая дает хорошие PDF-файлы того качества, которое мне нужно.

У меня никогда раньше не было проблем с изображениями внутри представления с помощью этого средства записи PDF, но я должен признать, что они были с изображениями, которые уже были настроены внутри представления (например, логотип, а не сказать,фотография сотрудников).

Моя проблема возникает таким образом, что, по крайней мере, я смог отследить ее чуть лучше.

Из моего контроллера я получаю следующее:

$employeeMedCert = $employee->attachments()->where('category','Medical Examiners Certificate')->orderBy('endDate','desc')->limit(1)->get();

И затем в моем блейде у меня есть следующее:

@foreach($employeeMedCert as $med){
    {{Storage::url($med->attachment)}}
 @endforeach

Теперь, с этой текущей настройкой, я получаю открытый путь к вложению, без каких-либо проблем.вообще.

Однако , если я сделаю следующее:

@foreach($employeeMedCert as $med){
    <img src="{{Storage::url($med->attachment)}}">
@endforeach

Он останавливает мой Laravel до такой степени, что я должен сбросить сервер и несгенерировано что-нибудь.

Я не уверен, в чем проблема, как я уже говорил, у меня не было проблем с изображениями раньше, и изображения, на которые я ссылаюсь динамически, не являются большими (300 - 600 кБ), поэтому я неуверен, где проблема на самом деле.

Действие контроллера загрузки:

        $path = Storage::putFile('public/employees', new File(request('file')));

        employeeAttachment::create([
                        'attachment' => $path,
                        'attachmentType' => Storage::mimeType($path),
                        'category' => $request->type,
                        'endDate' => $request->dueDate,
                        'date' => $request->date,
                        'employeeID' => $employee,
                        'createdBy' =>  Auth::id()
                    ]);      

1 Ответ

0 голосов
/ 21 мая 2018

Большая подсказка для этой проблемы заключается в том, что в html <img> теги делают запрос get, когда они запускаются в html.Это означает, что у вас может быть ошибка разрешения.

Вы можете проверить это, открыв devtools в chrome и проверив запросы вашего сервера на любом веб-сайте с тегом изображения.

проверьте (при условии, что вы используете базовое хранилище, например, не используете AWS):

  1. Является ли изображение в вашей общей папке или вы правильно создали свою ссылку sym: https://laravel.com/docs/5.6/filesystem.
  2. Если вашобщедоступные файлы. Можете ли вы перейти к нему в браузере?
  3. Вы пытались использовать URL вместо того, чтобы проходить через хранилище?например, <img src="{{base_url() . $med->attachment)}}"> (при условии, что $med->attachment - это путь к файлу).

Если это открытый файл, вам не нужно проходить через фасад Storage, чтобы получить к нему доступ.Дайте мне знать, если это направит вас в правильном направлении.

Цель фасада Storage - сохранить файлы, получить файлы и загрузить их в переменную php.В настоящее время вы загружаете файл с сервера, а затем указываете свой тег изображения на файл, а не на URL-адрес, где хранится изображение.

Размещение правильного URL-адреса в теге img должно решить вашу проблему.проблема (показано в 3 выше).

...