【发布时间】:2017-01-07 01:36:13
【问题描述】:
我不希望用户可以通过简单地使用像 http://laravel.dev/123.jpg 这样的 URL 来访问图像。因此,我将所有图像存储在存储目录中,而不是将它们存储在公用文件夹中。
有了这样的控制器
public function show($id) {
$img = storage_path('my_images/123.jpg');
return response()->download($img, null, [], null);
}
尽管图像存储在公用文件夹之外,但 Laravel 5 可以正确显示图像。
到目前为止还不错……但我想使用 Blade 并在图像周围加上更多细节。因此我的控制器看起来像这样
public function show($id) {
$picture = Picture::find($id);
$img = storage_path('my_images/123.jpg');
return view('pictures.show', array('picture' => $picture, 'img' => $img));
}
还有这样的观点
<!DOCTYPE html>
<html>
<head>
<title>Picture {{ $picture->id }}</title>
</head>
<body>
<h1>Picture {{ $picture->id }}</h1>
<ul>
<li>Name: {{ $picture->name }}</li>
<li>Description: {{ $picture->description }}</li>
</ul>
<img src="{{ $image }}">
</body>
</html>
这显然行不通,因为图像的位置不可公开访问(这是本意)。
我必须使用什么来代替 <img src="{{ $image }}"> 才能完成这项工作?
【问题讨论】:
标签: laravel-5 blade laravel-blade