我正在研究 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);
};
我读了很多关于节点流的文章,认为它可以帮助我解决我的问题,但没有真正理解如何处理。
有人可以知道如何在服务器端重建我的文件吗?
在此先感谢并原谅我的错误(如果有的话)。