Laravel从S3下载到本地

ack*_*hez 5 php download amazon-s3 amazon-web-services laravel-5

我正在尝试将存储在S3上的文件下载到本地Laravel安装中以进行操作。希望能有所帮助。

我已经正确设置了配置数据,因为我可以轻松上传它。我使用以下模式“ user-> id / media-> id.mp3”将其保存在S3中->请注意,我不仅将文件转储到S3中,还将它们保存在目录中。

成功将文件上传到S3之后,我更新了数据库中的保存路径,以显示“ user-> id / media-> id.mp3”,而不是一些较长的公共URL(这是错误的)吗?

当我稍后返回尝试下载文件时,在S3处出现FileNotFoundException。我在做

$audio = Storage::disk('s3')->get($media->location);
Run Code Online (Sandbox Code Playgroud)

奇怪的是,在例外情况下,它显示了无法获取的资源,但是当我在浏览器中放置相同的url时,它显示的文件没有任何问题。为什么文件系统无法获取文件?

我试图在“获取”之前进行“具有”检查,并且具有检查错误。

我需要在数据库中保存完整的公共URL才能起作用吗?我尝试过,但没有帮助。我觉得我缺少一些非常简单的东西,这让我发疯了!

Chi*_*027 8

答案较晚,但对其他人很重要,

 $s3_file = Storage::disk('s3')->get(request()->file);
 $s3 = Storage::disk('public');
 $s3->put("./file_name.tif", $s3_file);
Run Code Online (Sandbox Code Playgroud)

$ s3_file的响应将是一个流,您可以使用Laravel put file方法将该流数据保存到文件,您将在storage/public目录中找到该流文件。