Php 为什么存储返回一个本地URL,尽管它被上传到一个公共S3存储桶?

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();

我使用Laravel将通过标准HTML表单上传的文件上传到S3存储桶。文件已成功上载,但我无法获取上载文件的完整URL

根据以下规则,以下代码应返回完整的URL:

    $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-你说得对。唉。谢谢