2017-03-07 19 views
0

我正在使用請求承諾庫。我試圖將文件上載到一個簽名Amazon S3的URL:使用對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參數是否正確?

回答

2

我相信你想

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

,而不是

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

此外,您可以流,而不是先在內存中緩衝整個文件的文件:

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

request documentation瞭解更多信息。

+0

完美。我會接受何時SO允許我,謝謝 –