如何解决将 aws-s3-v3 与 laravel 和 digitalocean 空间一起使用会导致错误 501 未实现
我正在尝试使用 s3
和 Laravel 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 出现了两次,我认为这与它有关 :-?
解决方法
我解决了同样的问题,如下:
- 将以下端点添加到
.env
文件
DO_SPACES_ENDPOINT=https://SPACES_NAME.nyc3.digitaloceanspaces.com
- 将
config/filesystem.php
文件中的一个选项添加到您的 DO 空间。
'bucket_endpoint' => true
- 清除缓存。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。