【发布时间】:2016-11-28 18:26:38
【问题描述】:
我在 Laravel 5.3 项目中有一个位于 storage 的文件夹,其中包含图像文件。
如何显示该文件夹中的图像?
我有所有的名字
Storage::allFiles('images');
由于文件夹权限,我无法以通常的方式访问它们,并且我不想更改它们。 我也不想把文件放在 Public 目录中。
有什么建议吗? 提前致谢。
【问题讨论】:
我在 Laravel 5.3 项目中有一个位于 storage 的文件夹,其中包含图像文件。
如何显示该文件夹中的图像?
我有所有的名字
Storage::allFiles('images');
由于文件夹权限,我无法以通常的方式访问它们,并且我不想更改它们。 我也不想把文件放在 Public 目录中。
有什么建议吗? 提前致谢。
【问题讨论】:
您可以编写一个控制器函数来返回图像...类似于:
public function image($file){
$image = storage_path('images/' . $file);
if(!File::exists( $image ))
App::abort(404);
// using Intervention Image package
return Image::make($image)->response('jpg');
// using Laravel file response
$headers = ['Content-Type' => 'image/jpeg'];
return response()->file($image, $headers);
}
当然,这是非常简单的...您可以对其进行修饰以按需调整大小、检查 mime 类型并基于此返回正确的响应类型等。
【讨论】:
Route::get('/image/{file}', 'ImageController@image'); 所以当你向/image 发出 GET 请求时,它会通过这个函数提供服务。
return response()->file($image, $headers);