我正在使用请求承诺库。我尝试将文件上传到签名的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
参数是正确的参数吗?
答案 0 :(得分:3)
我相信你想要
body: fs.readFileSync('myfile.pdf')
而不是
file: fs.readFileSync('myfile.pdf')
此外,您可以流式传输文件,而不是首先在内存中缓冲整个文件:
body: fs.createReadStream('myfile.pdf')
有关详细信息,请参阅request
documentation。