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

时间:2017-12-17 05:38:20

标签: laravel amazon-s3

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);获取网址。这个网址看起来不错,但是Symphony说它不存在。但是,当我使用Storage::disk('s3')->exists($myPath);核对时,它会返回true

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

编辑:

以下更多详情:

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

1 个答案:

答案 0 :(得分:1)

以下内容应该足够了:

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

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

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

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

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

相关问题