【问题标题】:why when a file is upload using post presigned url the returned response doesnot have the key为什么当使用 post presigned url 上传文件时,返回的响应没有密钥
【发布时间】:2020-12-06 21:11:45
【问题描述】:

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

【问题讨论】:

    标签: amazon-s3 post status pre-signed-url


    【解决方案1】:

    如果createPresignedPost创建成功,它的响应是204,它不返回key作为响应的字段。 查看此代码,它可以帮助您实现这一目标。

    服务器端:

    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))
    

    【讨论】:

    • 这不是我的问题,我无法从预签名的 url 获取密钥,这很容易。当使用预签名的 url 上传文件时,我也指的是上传过程的响应没有密钥
    • 好的,我知道了,如果您需要它来跟踪上传,您不能使用简单的解决方案,例如将其保存在地图中吗? @艾哈迈德
    猜你喜欢
    • 2023-02-02
    • 1970-01-01
    • 2016-03-31
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多