У меня проблема с представлением и созданным контентом для создания 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()
]);
@hdifen - К сожалению, это была опечатка в этом посте. Хотя было бы неплохо, если бы это было так.
Я предполагаю, что Storage::url() ожидает одну строку, и кажется, что вы передаете объект. Вы пробовали {{Storage::url($med->attachment->url)}}?
@hdifen - См. мои изменения внизу. Это то, о чем вы имели в виду? Потому что, к сожалению, это тоже привело к проблеме ...
Ваше соглашение об именах меня немного смутило, так что это не будет вашей проблемой. Я подумаю
Ваши файлы общедоступны?
@hdifen - Да, я использую это конкретное вложение в паре других мест в моем проекте без каких-либо ошибок разрешений / путей.
Еще одно напоминание, Мэтью, что мы предпочитаем технический стиль письма. Мы мягко не приветствуем приветствия, надеемся, что вы можете помочь, спасибо, заранее спасибо, благодарственные письма, приветы, добрые пожелания, подписи, пожалуйста, не могли бы вы помочь, болтливый материал и сокращенный txtspk, мольбу, как долго вы застряли, советы по голосованию, мета-комментарии и т. д. Просто объясните свою проблему и покажите, что вы пробовали, чего вы ожидали и что на самом деле произошло.






Ключ к разгадке этой проблемы заключается в том, что в тегах html <img> выполняется запрос на получение, когда они запускаются в HTML. Это означает, что у вас может быть ошибка разрешения.
Вы можете проверить это, открыв свои инструменты разработчика в Chrome и проверив запросы вашего сервера на любом веб-сайте, на котором есть тег изображения.
Следующие вещи необходимо проверить (при условии, что вы используете базовое хранилище, например, не используете AWS):
<img src = "{{base_url() . $med->attachment)}}"> (при условии, что $med->attachment - это путь к файлу).Предполагая, что это общедоступный файл, вам не нужно проходить фасад Storage, чтобы получить к нему доступ. Сообщите мне, если это укажет вам правильное направление.
Назначение фасада Storage - сохранять файлы, получать файлы и загружать их в переменную php. В настоящее время вы загружаете файл с сервера, а затем указываете свой тег изображения на файл, а не на URL-адрес, где хранится изображение.
Включение действительного URL-адреса в тег img должно решить вашу проблему (показано в 3 выше).
У меня есть все, кроме числа 3. Моя проблема (и, возможно, вы сможете направить меня в правильном направлении, заключается в том, что на данный момент возвращаемый путь прикрепления (только через $ med-> attachment) является "общедоступным / employee / lAwWqHfur0aLx071KRdaxEyhx4Hh60ktjziUBklk.j peg "- это проблема, потому что для того, чтобы его можно было найти, у него должен быть URL-адрес" / storage / employee / .... "
Вы переписываете свой URL-адрес в .htaccess, чтобы не было «общедоступного»?
Я еще не касался этого, но ваш комментарий заставил меня задуматься - я фактически унаследовал этот проект и пытаюсь выполнить некоторые столь необходимые обновления, на данный момент, когда пользователь загружает какое-либо вложение, это процесс контроллера ниже , есть ли лучший способ справиться с этим в данном конкретном случае? (СМ. ВЫШЕ РЕДАКТИРОВАТЬ)
Вроде нормально. Можете ли вы пойти на dd(base_url() . $med->attachment); и проверить, можете ли вы перейти по этому URL-адресу в браузере? Вы должны увидеть изображение.
Куда бы вы хотели, чтобы я поместил это в контроллер, чтобы я мог получить результаты, которые вы ищете?
Да в контроллере было бы лучше всего. Я думаю, ваша проблема в том, что генерируемый URL-адрес неверен.
Я перешел в автономный режим, я обновил свой ответ выше, чтобы помочь вам встать на правильный путь. Дай мне знать, как у тебя дела.
В качестве обновления я обнаружил, что это должно быть что-то с самим тегом изображения. Мне пришлось изменить ваше предложение для ссылки на актив (чтобы получить общедоступный URL-адрес для доступа к месту хранения). У меня не было никаких проблем, это дало мне полную информацию: 192.168.1.178:8000/storage/employees/… - это точный способ доступа к файлу без каких-либо проблем. Но когда я помещаю его в <img src = "(url here)">, он снова ломает генератор PDF.
У вас такая же ошибка? Может быть, попробуйте жестко закодировать файл напрямую, например <img src = "/storage/employees/picture.jpg">.
Да, на этом этапе я жестко закодировал полный URL-путь в шаблоне лезвия, относительный путь в шаблон, но они продолжают нарушать работу генератора. Я попробовал использовать внешнее изображение, и оно мгновенно загрузилось в PDF. Так что я действительно не уверен, что происходит на данный момент ...
@enforeachдолжен быть@endforeach. Может быть причиной вашей проблемы с замкнутым циклом.