node.js:请求在sails.js框架中的IncomingMessage.onReqAborted多方中止

时间:2017-09-18 08:54:51

标签: node.js sails.js multiparty

我在node.js中有多方包

的文件上传系统
        var gm          = require('gm').subClass({imageMagick: true});
        var multiparty  = require('multiparty');

        var form        =  new multiparty.Form();

        var s3          =  sails.config.aws.main();

        var options     = {
            partSize: 5242880, queueSize: 1
        }
        form.parse(req, function(err, fields, files) {

            gm(files.fileToUpload[0].path)
                .resize(200,200,'^')
                .stream(function (err,buffer) {

                    s3.upload({
                        Bucket:'mybucket',
                        Body:buffer,
                        Key:'artwork-croppedimages/test.jpg'
                    },options,function(err, data) {
                        console.log("upload error",err);
                        console.log("data",data);
                    });

                 })

        });

它的工作正常但是当上传较大的文件时,通常大于20 MB我得到了这个错误

Error: Request aborted
    at IncomingMessage.onReqAborted (/var/www/node/cushbuart/node_modules/multiparty/index.js:183:17)
    at emitNone (events.js:86:13)
    at IncomingMessage.emit (events.js:188:7)
    at abortIncoming (_http_server.js:381:9)
    at socketOnClose (_http_server.js:375:3)
    at emitOne (events.js:101:20)
    at Socket.emit (events.js:191:7)
    at TCP._handle.close [as _onclose] (net.js:511:12)

我知道它通过增加超时解决但我不知道如何在sails.js framerwork

1 个答案:

答案 0 :(得分:1)

请求超时是Node.js的一项功能;关于它没有Sails特有的。来自Node.js documentation

  

request.setTimeout(timeout [,callback])

     

添加于:v0.5.9

     
      
  • timeout <number>请求前的毫秒数   被认为是超时的。
  •   
  • callback <Function>可选功能   发生超时时调用。与绑定到超时事件相同。
  •   
     

将一个套接字分配给此请求并连接   将调用socket.setTimeout()。

因此,在您的Sails.js操作中,如果您想将超时时间增加到4分钟,请执行req.setTimeout(4 * 60 * 1000)

您也可以考虑使用Sails的built-in file upload capabilities