Estoy usando la biblioteca de solicitud y promesa. Estoy tratando de cargar un archivo a una URL de Amazon S3 firmada:
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))La solicitud tiene éxito, pero Amazon informa que el archivo tiene una longitud de 0 bytes.
¿Es el parámetro del file el argumento correcto?
creo que quieres
body: fs.readFileSync('myfile.pdf')en vez de
file: fs.readFileSync('myfile.pdf')Además, puede transmitir el archivo en lugar de almacenar primero todo el archivo en la memoria:
body: fs.createReadStream('myfile.pdf') Consulte la documentación de la request para obtener más información.