Php 为什么存储返回一个本地URL,尽管它被上传到一个公共S3存储桶?
我使用Laravel将通过标准HTML表单上传的文件上传到S3存储桶。文件已成功上载,但我无法获取上载文件的完整URL 根据以下规则,以下代码应返回完整的URL:Php 为什么存储返回一个本地URL,尽管它被上传到一个公共S3存储桶?,php,laravel,amazon-web-services,laravel-5,amazon-s3,Php,Laravel,Amazon Web Services,Laravel 5,Amazon S3,我使用Laravel将通过标准HTML表单上传的文件上传到S3存储桶。文件已成功上载,但我无法获取上载文件的完整URL 根据以下规则,以下代码应返回完整的URL: $file = $request->file('file'); $filename = $request->get('filename'); if($file->isValid()) { $extension = $file->extension();
$file = $request->file('file');
$filename = $request->get('filename');
if($file->isValid()) {
$extension = $file->extension();
// Store local and on S3
$path = $file->storeAs('wysiwyg', $filename .'.'. $extension, 's3');
$url = Storage::disk('s3')->url($path);
return ['success' => $path];
}
然而,我实际上得到了一个在$url
中返回的相对URI。例如,如果我将wysiwyg/image.jpg
作为$path
传递,则图像将上载到该目的地的S3,但Storage::disk('S3')->url($path)
只返回wysiwyg/image.jpg
,而不是完全限定的域(http://test-bucket.s3-eu-west-1.amazonaws.com/wysiwyg/image.jpg
)
默认磁盘设置为s3,我可以确认映像已成功上载到s3
我如何才能获得完全合格的域作为此上载的一部分?我知道我可以将它存储在配置文件中,然后自己附加一个路径,但是如果我以编程方式管理多个bucket,这对我没有帮助
我用的是拉威尔5.5
谢谢
返回['success'=>$path]代码>
应该是:
return['success'=>$url]
您返回的是$path
,而不是$url
。请尝试此Storage::disk('s3')->getDriver()->getAdapter()->applyPathPrefix($path)代码>或存储路径('s3/'.$path)代码>@tkausl-你说得对。唉。谢谢