在此question中获得问题的帮助后,尽管成功上传了我可以在Backblaze Jmeter 板和应用程序中看到的图像,但我还是收到了另一个错误。
Unable to write file at location: profile-photos/0Oafj0VpwBbrMtvgLEnBmGl3UsL4rrUaD7HLzRDA.jpg.
Error executing "PutObject" on "https://xxx.s3.us-west-004.backblazeb2.com/profile-photos/0Oafj0VpwBbrMtvgLEnBmGl3UsL4rrUaD7HLzRDA.jpg"; AWS HTTP error: Client error: `PUT https://xxx.s3.us-west-004.backblazeb2.com/profile-photos/0Oafj0VpwBbrMtvgLEnBmGl3UsL4rrUaD7HLzRDA.jpg` resulted in a `400 Bad Request` response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Error>
<Code>InvalidArgument</Code>
<Message>Unsupporte (truncated...)
InvalidArgument (client): Unsupported value for canned acl 'private' -
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Error>
<Code>InvalidArgument</Code>
<Message>Unsupported value for canned acl 'private'</Message>
</Error>
我能做些什么来解决这个问题?
1条答案
按热度按时间2vuwiymt1#
这是Backblaze B2的S3兼容API与Amazon S3之间的差异之一。Backblaze B2控制桶级的可见性,而不是对象级的可见性,您有两个选择:
private
或public-read
(在Backblaze Web UI中仅显示为“public”)。如果在将对象放入存储桶时指定了ACL,则必须匹配存储桶的ACL。这里是文档的相关部分。看起来Laravel试图在公共读取存储桶中创建私有对象,因此B2返回
Unsupported value
错误。有两种方法可以解决这个问题。或者:
public-read
更改为private
(web界面中的存储桶设置),或者public-read
封装ACL创建对象。From this discussion at Laracasts,看起来你可以在
config/filesystems.php
的s3配置中设置默认可见性。如果在此处设置public
,则S3驱动程序会将其Map到public-read
。