在流式传输多部分表单时无法发送响应

时间:2014-11-26 03:00:20

标签: node.js sails.js multipartform-data

我使用nodejs结合sailsjs和skipper将文件上传到服务器。

我有一个用例,我需要检查文件长度,如果上传超过某个文件大小,则发送413错误。但是当我尝试发送任何类型的响应时,没有任何反应。到底发生了什么?是否需要在发送回复之前完成表单上传?

    var getReceiver = function () {
      var receiver = new Writable({objectMode: true});
      receiver._write = function (file, enc, done) {

        file.fd = directory + file.fd;

        var fileStream = fs.createWriteStream(file.fd);

        fileStream.on('error', function (err) {
          done(err);
        }).once('finish', function () {
          done();
        });

        var fileLength = 0;
        file.on('data', function (chunk) {
          fileLength = fileLength + chunk.length;
          if (fileLength > maxFileSize) {
            var err = new Error('upload exceeds maxFileSize.');
            file.unpipe();
            fs.unlink(file.fd, function (fsErr) {
              if (fsErr && (typeof fsErr !== 'object' || fsErr.code !== 'ENOENT')) {
                return done([err].concat([fsErr]));
              }
            });
            return done(err);
          }
        });

        file.pipe(fileStream);
      };

      return receiver;
    };

    req.file('file').upload(getReceiver(), function (err, uploadedFiles) {
      if (err) {
        return res.badRequest(err);
      }

      // Do stuff

          }
        });
      });
    });

0 个答案:

没有答案