【问题标题】:S3 upload files with publicS3 使用公共上传文件
【发布时间】:2020-10-01 18:27:49
【问题描述】:

我有一个使用 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",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::bucketname"
    }
  ]
}

感谢您的帮助

【问题讨论】:

    标签: node.js amazon-web-services amazon-s3 wasabi


    【解决方案1】:

    桶策略应该引用桶的内容,尾随/*

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AllowPublicRead",
          "Effect": "Allow",
          "Principal": "*",
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::bucketname/*"
        }
      ]
    }
    

    【讨论】:

      【解决方案2】:

      您可以通过添加公开上传

            ACL: 'public-read',
      

      到您的上传参数,如

          const paramsForUpload = {
            Bucket: bucketName,
            Key: filePath,
            Body: file.data,
            ACL: 'public-read',
          };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-18
        • 2015-09-17
        • 1970-01-01
        • 2012-09-30
        • 1970-01-01
        • 2021-04-27
        • 2019-03-19
        • 2023-04-08
        相关资源
        最近更新 更多