Laravel:在浏览器中显示来自云存储的文件

问题描述 投票:1回答:1

来自Laravel文档https://laravel.com/docs/5.5/responses#file-responses的这个片段似乎正是我需要的:

return response()->file($pathToFile);

问题是我的文件存储在S3磁盘上,我似乎无法正确引用它。

我尝试使用Storage::disk('s3')->getDriver()->getAdapter()->applyPathPrefix($myPath);来获取完全限定的文件名。它只是返回了$myPath的值。

然后我尝试使用Storage::disk('s3')->url($myPath);获取网址URL看起来不错,但Symphony说它不存在。但是当我用Storage::disk('s3')->exists($myPath);检查时,它会返回true

如何直接在用户的浏览器中显示云存储中的文件?

编辑:

更多细节如下:

问题 - 文件是否需要公开? (目前是,但我更愿意将其设为私有)。

laravel amazon-s3
1个回答
1
投票

以下应该足够了:

$path = Storage::disk('s3')->url($filename);

我没有设置工作示例,但是从内存中$filename应该与你最初在->put()方法中放置的相同。所以当你在你的问题中说$mypath时,希望这不是像你的s3实例那样的前缀。

如果不是这种情况,您可以编辑问题以包含->url()的结果以及put()调用和$ path的示例。

看一下编辑,我想我明白你要做什么,这已在这里解决:

https://laracasts.com/discuss/channels/laravel/file-response-from-s3

© www.soinside.com 2019 - 2024. All rights reserved.