为什么当使用后置预签名url上传文件时,返回的响应没有密钥

问题描述

我当前正在使用预签名的url将照片上传到我的存储桶,但是上传完成后,响应状态为204,并且此响应不包含密钥。使用预签名后的网址上传文件时是否可以返回密钥?

解决方法

如果createPresignedPost创建成功,其响应为204,则它不返回键作为响应的字段。 请查看此代码,以帮助您实现目标。

服务器端:

const presignedKey = 'your/key'

var params = {
  Bucket: 'bucket',Fields: {
    key: presignedKey
  }
};

s3.createPresignedPost(params,function(err,data) {
  if (err) {
    console.error('Presigning post data encountered an error',err);
  } else {
    data.Fields.key = presignedKey;
    console.log('The post data is',data);
  }
});

客户端应迭代已经包含key字段的响应值。

const formData = new FormData()

Object.keys(presignedUrlResponse?.fields).forEach(key => {
    formData.append(key,presignedUrlResponse?.fields[key])
})

formData.append('file',fs.createReadStream(file))

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...