存储在Laravel 5.2的/storage/app/
文件夹中的图片未呈现为DOMPDF。我收到错误消息:image not found or type unknown
。
图片的路径是storage/app/v6_dashboard.png
,我试过这些:
<img src="/media/v6_dashboard.png" />
<img src="media/v6_dashboard.png" />
<img src="http://localhost:8000/media/v6_dashboard.png" />
使用此路线:
Route::get('/media/{img}', function ($img) {
$image = Image::make(Storage::disk('local')->get($img));
return Response::make($image->encode('jpg'), 200, ['Content-Type' => 'image/jpeg']);
});
请注意,我有这个配置集:"DOMPDF_ENABLE_REMOTE" => true
它适用于典型的HTML视图,但不适用于DOMPDF。是否有根本不相容或我做错了什么?
答案 0 :(得分:1)
您需要参考图像的公共路径。因此,如果'image.jpg'位于您的公共/图像文件夹中并存储在名为$ image的变量中,您可以执行以下操作:
<img src="{{ public_path() . $image }}">
dompdf需要服务器上的绝对路径,而不是客户端会看到的路径!
答案 1 :(得分:0)
最后,我绕过路线并使用str_replace
将/media/
切换到绝对路径,如下所示:
str_replace('/media/', '../storage/app/', $link);
在HTML中从public
转到storage
略有违反直觉,但它似乎是DOMPDF渲染图像的唯一方法。还发现DOMPDF不会通过HTTPS呈现远程图像。