微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 aws-s3-v3 与 laravel 和 digitalocean 空间一起使用会导致错误 501 未实现

如何解决将 aws-s3-v3 与 laravel 和 digitalocean 空间一起使用会导致错误 501 未实现

我正在尝试使用 s3Laravel 8 将一些文件从 digitalocean(空间)上传flysystem-aws-s3-v3 兼容存储。

但是当我提交这些文件时,我收到了这个错误

Aws\S3\Exception\S3Exception
Error executing "PutObject" on "//SPACES_NAME.nyc3.digitaloceanspaces.com/SPACES_NAME.nyc3.digitaloceanspaces.com"; AWS HTTP error: Server error: `PUT http://SPACES_NAME.nyc3.digitaloceanspaces.com/SPACES_NAME.nyc3.digitaloceanspaces.com` resulted in a `501 Not Implemented` response: <?xml version="1.0" encoding="UTF-8"?><Error><Code>NotImplemented</Code><RequestId>tx00000000000000bf40fd9-00605636a9-96 (truncated...) NotImplemented (server): - <?xml version="1.0" encoding="UTF-8"?><Error><Code>NotImplemented</Code><RequestId>tx00000000000000bf40fd9-0060

5636a9-9617be5-nyc3c9617be5-nyc3c-nyc3-zg03

以下是我的来自 .env 的数字海洋常量:

DO_SPACES_ACCESS_KEY=[edit]
DO_SPACES_SECRET_ACCESS_KEY=[edit]
DO_SPACES_ENDPOINT=nyc3.digitaloceanspaces.com
DO_SPACES_REGION=nyc3
DO_SPACES_BUCKET=SPACES_NAME
DO_URL=https://SPACES_NAME.nyc3.cdn.digitaloceanspaces.com  

这是来自 config/filesystem.PHP 的配置部分:

'disks' => [
    ...
    'do' => [
        'driver'    => 's3','key'       => env('DO_SPACES_ACCESS_KEY'),'secret'    => env('DO_SPACES_SECRET_ACCESS_KEY'),'region'    => env('DO_SPACES_REGION'),'bucket'    => env('DO_SPACES_BUCKET'),'endpoint'  => env('DO_SPACES_ENDPOINT'),'url'   => env('DO_URL'),],

这是我用来处理上传的测试方法

Route::post('upload',function(){
        $extension = request()->file('file')->extension();
        $path = Storage::disk('do')->putFileAs('upload',request()->file('file'),time() . '.' .$extension,'public');
});

对如何修复此 501 not implemented 错误有任何想法吗?我看到出于某种原因该 url 出现了两次,我认为这与它有关 :-?

解决方法

我解决了同样的问题,如下:

  1. 将以下端点添加到 .env 文件
    DO_SPACES_ENDPOINT=https://SPACES_NAME.nyc3.digitaloceanspaces.com
  1. config/filesystem.php 文件中的一个选项添加到您的 DO 空间。
    'bucket_endpoint' => true
  1. 清除缓存。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。