Восстановление фрагментированного файла в Node.js - PullRequest
0 голосов
/ 04 января 2019

Я работаю над стеком 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);
};

Я много читал о потоках узлов, думая, что это поможет мне решить мою проблему, но не понимая, как с этим справиться.

Может кто-нибудь иметь представление о том, как восстановить мои файлы на стороне сервера?

Заранее спасибо и извините за ошибку, если таковая имеется.

...