我正在使用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);
};
我读了很多关于节点流的文章,认为它可以帮助我解决问题,但实际上却不了解如何处理。
有人可以对如何在服务器端重建我的文件有任何想法吗?
在此先感谢您的帮助。