Laravel DOMPDF:如何从存储文件夹加载图像?

时间:2016-05-06 18:54:54

标签: php image laravel dompdf

存储在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。是否有根本不相容或我做错了什么?

2 个答案:

答案 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呈现远程图像。