Actualmente estoy usando putObject para cargar el archivo grande en AWS s3 con la llamada REST api.
var params ={ Bucket:'lambdacushbu', Key:req.files.image.name, Body:req.files.image.data } s3.putObject(params,function(err, data) { if (err) console.log(err, err.stack); // an error occurred else { console.timeEnd('Uploadtime'); console.log("uploaded",data); res.json({ 'status':'Uploaded', 'url':data.Location }); } // successful response });Pero parece asíncrono, quiero lo anterior en modo síncrono, también se produjo un tiempo de espera, pero el archivo se está cargando en AWS s3.
Entonces, ¿cómo puedo aumentar el valor de tiempo de espera? probado con el paquete connect-timeout
app.use(timeout('600000'));Pero no funcionó
Intente usar la función de upload en lugar de putObject . Eso debería resolver su problema de tiempo de espera.
Aquí hay una documentación para esa función: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property
La llamada síncrona definitivamente reducirá el rendimiento de su aplicación. ¿Puede proporcionarme más detalles sobre su problema para que podamos encontrar una solución asíncrona?
EDITAR: así es como debe devolver la respuesta en su controlador:
router.post('/your-route', //additional middlewares function(req, res, next) { var params = { Bucket:'lambdacushbu', Key:req.files.image.name, Body:req.files.image.data } s3.upload(params,function(err, data) { if (err) { res.json(err); } else { res.json({ 'status':'Uploaded', 'url':data.Location } }); } ); Y asegúrese de no llamar a res.json() o res.send() en ningún otro lugar de esta ruta