在Node.js中重建分块文件

时间:2019-01-04 16:27:48

标签: angularjs node.js multer ng-file-upload filesplitting

我正在使用angularjs / nodejs(express)堆栈。在这个项目中,我必须从客户端向服务器上传大型二进制文件(〜150mb)。由于公司代理的限制,由于ng-file-upload库,我们必须对文件进行分块。上传的文件分成1mb个请求,如下所示:

------WebKitFormBoundaryAHupR7ANrwE1zXZR
Content-Disposition: form-data; name="binServerUrl"

https://server-url.com/upload/
------WebKitFormBoundaryAHupR7ANrwE1zXZR
Content-Disposition: form-data; name="_chunkSize"

1048576
------WebKitFormBoundaryAHupR7ANrwE1zXZR
Content-Disposition: form-data; name="_currentChunkSize"

1048576
------WebKitFormBoundaryAHupR7ANrwE1zXZR
Content-Disposition: form-data; name="_chunkNumber"

2
------WebKitFormBoundaryAHupR7ANrwE1zXZR
Content-Disposition: form-data; name="_totalSize"

5209196
------WebKitFormBoundaryAHupR7ANrwE1zXZR
Content-Disposition: form-data; name="binaryFile"; filename="test.exe"
Content-Type: application/octet-stream

ÎéoÓ¦­«ÅP9`÷Ú­ådFÕ+Oø¾ö³ÎÖ>XÖU§ÚÔadæNËm·\ÄM3U¨êÞû¢éëT¹¸Kµõª/E

但是,目前,我无法在服务器端处理那些接收到的块。目前,我正在使用Multer中间件,当我收到一个新的块时,先前的块将被新的块覆盖。

我的中间件代码如下:

var multer = require('multer');

module.exports = function(req, res, next) {
  storage = multer.diskStorage({
    destination: function (req, file, cb) {
      cb(null, config.filePath + '/' + req.params.binaryId);
    },
    filename: function (req, file, cb) {
      cb(null, file.originalname);
    }
  });
  return multer({ storage: storage }).fields([{ name: 'binaryFile'},{ name: 'manifestFile'}])(req, res, next);
};

我读了很多关于节点流的文章,认为它可以帮助我解决问题,但实际上却不了解如何处理。

有人可以对如何在服务器端重建我的文件有任何想法吗?

在此先感谢您的帮助。

0 个答案:

没有答案