使用AWS S3预签名URL通过节点请求上传文件

时间:2019-04-14 12:30:51

标签: node.js amazon-s3 aws-sdk

我正在尝试使用预签名的url和节点请求将文件上传到AWS S3存储桶。

我的相关代码如下:

const name = file.split('/').slice(-1)[0]

const { uploadUrl } = await request.post(requestUploadUrl, {
  body: {
    name,
    repo,
    branch,
    type: contentTypes[name.split('.').slice(-1)[0]],
  },
  json: true,
  headers: {
    Authorization: `Bearer ${jwt}`,
  },
})

try {
  await request({
    url: uploadUrl,
    method: 'put',
    formData: { [name]: fs.createReadStream(file) },
  })

  console.log(`Uploaded ${file}`)
} catch (e) {
  console.log(e)
}

requestUploadUrl是一个远程URL(由我创建)。

如果我在Postman中手动进行文件上传,则可以正常工作。

当我运行此脚本时,所有文件都带有以下标头作为前缀:

----------------------------920900176793713318627065
Content-Disposition: form-data; name="file.html"
Content-Type: application/octet-stream

当我尝试下载和呈现HTML时,在网页中显示哪个。

由于这些标题,上传的视频文件不起作用。

我想获取不带这些头的文件,但不知道如何。

0 个答案:

没有答案