Laravel DOMPDF:如何从存储文件夹加载图像?
Laravel DOMPDF: how to load image from storage folder?
图像存储在 Laravel 5.2 isn't being rendered into DOMPDF 的 /storage/app/
文件夹中。我收到一条错误消息: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 中无效。是根本不兼容还是我做错了什么?
最后绕过路由,用一个str_replace
把/media/
切换成绝对路径,像这样:
str_replace('/media/', '../storage/app/', $link);
在 HTML 中从 public
到 storage
有点违反直觉,但这似乎是 DOMPDF 渲染图像的唯一方法。还发现 DOMPDF 不会通过 HTTPS 呈现远程图像。
您需要引用图像的 public 路径。因此,如果 'image.jpg' 在您的 public/images 文件夹中并存储在名为 $image 的变量中,您可以执行以下操作:
<img src="{{ public_path() . $image }}">
dompdf 需要服务器上的绝对路径,而不是客户端会看到的!
图像存储在 Laravel 5.2 isn't being rendered into DOMPDF 的 /storage/app/
文件夹中。我收到一条错误消息: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 中无效。是根本不兼容还是我做错了什么?
最后绕过路由,用一个str_replace
把/media/
切换成绝对路径,像这样:
str_replace('/media/', '../storage/app/', $link);
在 HTML 中从 public
到 storage
有点违反直觉,但这似乎是 DOMPDF 渲染图像的唯一方法。还发现 DOMPDF 不会通过 HTTPS 呈现远程图像。
您需要引用图像的 public 路径。因此,如果 'image.jpg' 在您的 public/images 文件夹中并存储在名为 $image 的变量中,您可以执行以下操作:
<img src="{{ public_path() . $image }}">
dompdf 需要服务器上的绝对路径,而不是客户端会看到的!