Laravel 5.1 - 显示存储在Storage文件夹中的图像

5

我正在使用 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也是正确的,但它只显示了一个损坏的图像图标。我的代码有什么问题吗?
谢谢!

我尝试了,但是如上所述,图片无法显示。 - xlKD
1
文件能被HTTP服务器读取吗?你为什么要在missingMethod方法中实现图像处理呢?因为该方法只接受一个参数,而且是参数数组,不像你定义的$filename。你尝试过符号链接方法吗? - Bogdan
你可能会发现这个讨论很有帮助,特别是最后几篇帖子。 - camelCase
所有图片都出现这种情况,这表明可能是您的nginx设置有问题。请尝试使用“nginx”标记问题。我唯一的建议是检查文件夹/文件权限。 - Jeemusu
显示剩余7条评论
1个回答

0

抱歉各位,我的/config文件夹中的一个php脚本有前导空格,这导致了http响应失败@@ 真是个无意义的错误... 感谢大家的帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接