Laravel 5-如何在视图中访问上传到存储器中的图像?

我已经将用户的头像上传到了Laravel存储中。如何访问它们并在视图中渲染它们

服务器将所有请求指向/public,因此,如果它们位于/storage文件夹中,如何显示它们

最好的方法是创建一个符号链接,就像下面的答案中指出的那样。为了帮助实现这一点,自5.3版以来,Laravel包含了一个命令,该命令使这项工作非常容易:

php artisan存储:链接

这为您创建了一个从public/storagestorage/app/public的符号链接,仅此而已。现在可以通过以下链接访问/storage/app/public中的任何文件:

http://somedomain.com/storage/image.jpg

如果出于任何原因,您无法创建符号链接(可能是共享主机等),或者您希望在某些访问控制逻辑后保护某些文件,那么可以选择使用特殊路由读取和服务图像。例如,一条简单的封闭路线如下:

Route::get('storage/{filename}',函数($filename)
{
$path=存储路径('public/'。$filename);
如果(!File::exists($path)){
中止(404);
}
$file=file::get($path);
$type=File::mimeType($path);
$response=response::make($file,200);
$response->标题(“内容类型”,$Type);
返回$response;
});

现在,您可以像使用符号链接一样访问文件:

http://somedomain.com/storage/image.jpg

如果您使用的是干预图像库,您可以使用其内置的响应方法使内容更加简洁:

Route::get('storage/{filename}',函数($filename)
{
返回图像::make(存储路径('public/'.$filename))->响应();
});

警告

请记住,通过手动提供文件,您将遭受性能损失,因为您要通过整个Laravel请求生命周期来读取和发送文件内容,这比让HTTP服务器处理要慢得多

发表评论