目前,我正在使用putObject通过REST api调用将大文件上传到AWS s3。
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
}); 但它看起来像异步,我希望上面的同步模式,也发生了超时,但文件正在上传到亚马逊网络服务的s3。
那么如何增加超时值呢?尝试使用connect-timeout包
app.use(timeout('600000'));但它并没有起作用
发布于 2017-04-04 15:15:33
尝试使用upload函数而不是putObject。这应该可以解决您的超时问题。
下面是该函数的文档:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property
同步调用肯定会降低应用程序的性能。您能否提供更多有关您的问题的详细信息,以便我们可以找到异步解决方案?
编辑:下面是你应该如何在你的控制器中返回响应:
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
}
});
}
);并确保您不会在此路径中的任何其他地方调用res.json()或res.send()
https://stackoverflow.com/questions/43199843
复制相似问题