使用对Amazon S3的请求承诺上传文件缓冲区

时间:2017-03-07 21:57:05

标签: node.js amazon-s3 request

我正在使用请求承诺库。我尝试将文件上传到签名的Amazon S3网址:

var fs = require('fs')
var request = require('request-promise-native')
request({
  method: 'PUT',
  uri: 'https://MYBUCKET.amazonaws.com/myfile.pdf?AWSAccessKeyId=KEY&Expires=1489006131&Signature=SIGNATURE',
  headers: {
    'x-amz-server-side-encryption': 'AES256',
    'Content-Type': 'application/pdf'
  },
  file: fs.readFileSync('myfile.pdf')
}).then((r) => console.log('response', r)).catch((err) => console.log('err', err))

请求成功,但亚马逊报告该文件的长度为0个字节。

file参数是正确的参数吗?

1 个答案:

答案 0 :(得分:3)

我相信你想要

body: fs.readFileSync('myfile.pdf')

而不是

file: fs.readFileSync('myfile.pdf')

此外,您可以流式传输文件,而不是首先在内存中缓冲整个文件:

body: fs.createReadStream('myfile.pdf')

有关详细信息,请参阅request documentation