gpt4 book ai didi

php - DigitalOcean 空间 : unable to set file to public

转载 作者:行者123 更新时间:2023-12-05 06:55:49 24 4
gpt4 key购买 nike

我有一个配置了 CDN 的 Digital Ocean Space 设置。我知道 CDN 配置是有效的,因为上传的文件和设置为公共(public)的传输工作正常。我正在尝试让我的 CMS 上传和发布文件。

我试过使用这个 SDK然后再次直接使用 S3 SDK,但到目前为止,我无法在上传后将文件的隐私设置为公开,也无法将空间(存储桶)的隐私更改为公开。

尽管文件已成功上传且路径正确(我可以在 Spaces 仪表板中看到该文件),但尝试将文件的隐私设置为公开时总是会返回 404。将空间设置为公共(public)不会出错,但似乎不会对其中的任何目录或文件产生影响。

这是我使用的代码:

$client = new Aws\S3\S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'endpoint' => getenv('storage.region'),
'credentials' => [
'key' => getenv('storage.access_key'),
'secret' => getenv('storage.secret_key'),
]
]);

$client->uploadDirectory($filePath, "XX", $dirName); // successful
$client->putBucketAcl(["Bucket" => "XX", "ACL" => 'public-read']); // no error, but no effect on space

foreach (new DirectoryIterator($filePath) as $file) {
if($file->isDot()) continue;
$client->putObjectAcl(["Bucket" => "XX", "Key" => $dirname . $file->getFilename(), "ACL" => "public-read"]); // always returns 404
}

这是返回的确切 404 错误:

在“https://xx.nyc3.digitaloceanspaces.com//media/pages/journal/11-27-2020/2478608562-1607828382/m6-79-28-38x”上执行“PutObjectAcl”时出错。 jpg?acl";AWS HTTP 错误:客户端错误:'PUT https://xx.nyc3.digitaloceanspaces.com//media/pages/journal/11-27-2020/2478608562-1607828382/m6-79-28-38x.jpg ?acl' 导致 404 Not Found 响应:

<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>NoSuchKey</Code>
<BucketName>xx</BucketName>
<RequestId>tx000000000 (truncated...) NoSuchKey (client): -
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>NoSuchKey</Code>
<BucketName>xx</BucketName>
<RequestId>tx000000000000000d949ce-005fd5839f-2a11a58-nyc3c</RequestId>
<HostId>abcd-abcd-abcd</HostId>
</Error>

不同于另一个question发布的文件名和使用的路径中都没有特殊字符,这是一个示例:

https://xx.nyc3.digitaloceanspaces.com/media/pages/journal/11-27-2020/3551000373-1607742797/m6-75-29a-100x.jpg

最佳答案

我能够使用 boto3 将对象设置为可公开访问:

s3_client.put_object_acl(Bucket="my-bucket", Key="favicon.ico", ACL='public-read')

按照以下说明创建 s3_client: https://docs.digitalocean.com/reference/api/spaces-api/

在此处查看有关 boto3 的更多信息:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.put_object_acl

关于php - DigitalOcean 空间 : unable to set file to public,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65271988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com