我正在使用 Laravel 5.1 为网站制作图片上传功能。由于安全问题,我希望将这些图片存储在 /storage/app
文件夹中,而不是 /public
。例如图片的 URL:
/storage/app/images/<image_name>
为了从
/storage/app
获取图像,我设置了一个专门的路由:http://app.com/image/<image_name>
将图片请求指向
/storage
:Route::controllers([
'image' => 'Frontend\ImageController',
]);
在
ImageController
中,以下是创建响应的代码:public function missingMethod($filename = [])
{
if (is_array($filename)) {
$filename = implode('/', $filename);
}
// storage_path('app') - path to /storage/app folder
$path = storage_path('app') . '/' . $filename;
$file = \File::get($path);
$type = \File::mimeType($path);
return \Response::make($file,200)
->header("Content-Type", $type);
}
我的问题是,在使用此路由检索图像之后,我无法在视图中显示它们。没有404、500或任何错误状态码,请求URL也是正确的,但它只显示了一个损坏的图像图标。我的代码有什么问题吗?
谢谢!
missingMethod
方法中实现图像处理呢?因为该方法只接受一个参数,而且是参数数组,不像你定义的$filename
。你尝试过符号链接方法吗? - Bogdan