如何解决S3公开上传文件
我有一个与nodeJs合作的网站。用户可以在这里上传他们的图片。我正在使用芥末来存储照片。 我的问题是,每当用户将图片发送到服务器时,都会将其保存为私有状态。因此,上传后用户看不到图片。我需要将其公开显示在存储桶中,以便用户可以看到它。 我所有的存储桶都可以自由读取,但是每次我上传文件时,它都是私有的。如何公开每个上传的图片?
这些是我的上传参数
const paramsForUpload = {
Bucket: bucketName,Key: filePath,Body: file.data,};
const options = {
partSize: 10 * 1024 * 1024,// 10 MB
queueSize: 10,};
s3.upload(paramsForUpload,options,(err) =>{
....
})
我的政策
{
"Version": "2012-10-17","Statement": [
{
"Sid": "AllowPublicRead","Effect": "Allow","Principal": {
"AWS": "*"
},"Action": "s3:Getobject","Resource": "arn:aws:s3:::bucketname"
},{
"Sid": "AddPerm","Resource": "arn:aws:s3:::bucketname"
}
]
}
感谢您的帮助
解决方法
存储桶策略应引用存储桶的内容,并在结尾加上/*
:
{
"Version": "2012-10-17","Statement": [
{
"Sid": "AllowPublicRead","Effect": "Allow","Principal": "*","Action": "s3:GetObject","Resource": "arn:aws:s3:::bucketname/*"
}
]
}
,
您可以通过添加公开上传
ACL: 'public-read',
到您的上传参数
const paramsForUpload = {
Bucket: bucketName,Key: filePath,Body: file.data,ACL: 'public-read',};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。