gpt4 book ai didi

php - Laravel 5 - 如何在 View 中访问存储中上传的图像?

转载 作者:行者123 更新时间:2023-12-03 04:20:57 25 4
gpt4 key购买 nike

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

服务器将所有请求指向 /public,那么如果它们位于 /storage 文件夹中,我该如何显示它们?

最佳答案

最好的方法是创建一个符号链接(symbolic link),就像 the answer below 中很好地指出的 @SlateEntropy 一样。 。为了帮助解决这个问题,从版本 5.3 开始,Laravel includes a command这使得这非常容易做到:

php artisan storage:link

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

http://somedomain.com/storage/image.jpg
<小时/>

如果出于任何原因,您无法创建符号链接(symbolic link)(也许您位于共享主机等),或者您想保护某些访问控制逻辑背后的某些文件,则可以选择使用特殊路由读取并服务图像。例如,像这样的简单关闭路线:

Route::get('storage/{filename}', function ($filename)
{
$path = storage_path('public/' . $filename);

if (!File::exists($path)) {
abort(404);
}

$file = File::get($path);
$type = File::mimeType($path);

$response = Response::make($file, 200);
$response->header("Content-Type", $type);

return $response;
});

您现在可以像有符号链接(symbolic link)一样访问您的文件:

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

如果您使用 Intervention Image Library您可以使用其内置的 response 方法使事情变得更加简洁:

Route::get('storage/{filename}', function ($filename)
{
return Image::make(storage_path('public/' . $filename))->response();
});
<小时/>

WARNING

Keep in mind that by manually serving the files you're incurring a performance penalty, because you're going through the entire Laravel request lifecycle in order to read and send the file contents, which is considerably slower than having the HTTP server handle it.

关于php - Laravel 5 - 如何在 View 中访问存储中上传的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30191330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com