首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缺少签名,来自aws-sdk-js的createPresignedPost上载程序

缺少签名,来自aws-sdk-js的createPresignedPost上载程序
EN

Stack Overflow用户
提问于 2019-12-16 02:01:07
回答 1查看 207关注 0票数 0

缺少签名,来自aws-sdk的createPresignedPost上传器,具有以下代码。未根据react-dropzone-uploader获取上传文件到s3的相关结果。从亚马逊s3上传面临403错误的文件时

代码语言:javascript
复制
 const params = {
      Bucket: myBucket,
      Key: myKey,
      Fields: {
        Key: myKey,
        AWSAccessKeyId: process.env.AWS_ACCESS_KEY_ID,
        acl: "public-read",
      },
      Expires: signedUrlExpireSeconds,
      Conditions: [
          ['content-length-range', 0, 100000000], // 100 Mb
          {'acl': 'public-read'}
      ]
  };
    s3.createPresignedPost(params, function(err, data) {
      if (err) {
        console.error('Presigning post data encountered an error', err);
      } else {
        // console.log('The post data is', data);

         data.fileUrl = data.url+"/"+data.fields.key;
         data.uploadUrl = data.url+"/";
          res.status(200).send(
            new apiResponse.responseObject(200, data, null).getResObject()
          );
      }
    });

https://react-dropzone-uploader.js.org/docs/s3#s3-using-put-instead-of-post

EN

回答 1

Stack Overflow用户

发布于 2019-12-16 03:59:33

在生成预签名的URL时,您不需要在参数中传递AWSAccessKeyId。此外,“acl”应位于Fields属性之外。

代码语言:javascript
复制
return new Promise((resolve, reject) => {
    const params = {
        Bucket: myBucket,
        Fields: {
            key: myKey
        },
        Expires: signedUrlExpireSeconds,
        Conditions: [
            ['content-length-range', 0, 10000000], // 10 Mb
            {'acl': 'public-read'}
        ]
    };
    s3.createPresignedPost(params, (err, data) => {
        resolve(data);
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59346640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档