0

我正在研究 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);
};

我读了很多关于节点流的文章,认为它可以帮助我解决我的问题,但没有真正理解如何处理。

有人可以知道如何在服务器端重建我的文件吗?

在此先感谢并原谅我的错误(如果有的话)。

4

0 回答 0