首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用express js同步上传大文件到AWS s3

使用express js同步上传大文件到AWS s3
EN

Stack Overflow用户
提问于 2017-04-04 14:29:27
回答 1查看 1.9K关注 0票数 0

目前,我正在使用putObject通过REST api调用将大文件上传到AWS s3。

代码语言:javascript
复制
 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

代码语言:javascript
复制
app.use(timeout('600000'));

但它并没有起作用

EN

回答 1

Stack Overflow用户

发布于 2017-04-04 15:15:33

尝试使用upload函数而不是putObject。这应该可以解决您的超时问题。

下面是该函数的文档:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property

同步调用肯定会降低应用程序的性能。您能否提供更多有关您的问题的详细信息,以便我们可以找到异步解决方案?

编辑:下面是你应该如何在你的控制器中返回响应:

代码语言:javascript
复制
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()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43199843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档