Я работаю над стеком angularjs / nodejs (express). В этом проекте мне нужно загрузить большой двоичный файл (~ 150 МБ) с клиента на сервер. Из-за ограничения прокси-сервера компании мы должны разбивать файлы на части благодаря библиотеке ng-file-upload. Загруженные файлы разбиваются на 1 МБ запросов, которые выглядят так:
------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);
};
Я много читал о потоках узлов, думая, что это поможет мне решить мою проблему, но не понимая, как с этим справиться.
Может кто-нибудь иметь представление о том, как восстановить мои файлы на стороне сервера?
Заранее спасибо и извините за ошибку, если таковая имеется.