Загрузка хеширования файлов Node js и как скачивать файлы по частям

Чего я хочу достичь при загрузке файла, я хочу загрузить или получить к нему доступ по частям. Затем я хотел проверить размер файла и загрузить первый КБ файла, а затем сравнить хэш первого КБ с хешем загруженного файл (того же размера), затем отклоните загрузку, если размер и хэш совпадают, иначе загрузите файл и продолжите. Любая идея, как я могу интегрировать его в мою текущую реализацию кода. Ниже, спасибо.

Цель

  1. Доступ к файлам в патронах - функция возобновления загрузки
  2. Проверить размер файла
  3. Загрузите первый КБ файла
  4. Сравните первый килобайт с хешем загруженных файлов
  5. Если тот же размер отклоняет загрузку (если тот же размер и хеш одинаковы)
  6. Скачайте файл и двигайтесь дальше

Мой текущий код

var queue = new Queue("my-queue", "redis://127.0.0.1:6379/0");

                queue.add({ final_list: final_list });

                queue.process(function processor(job, done) {

                    var final_list = job.data.final_list;
                    var promises = [];

                    var download = function (url, dest, callback) {

                        request.get(url)
                            .on('error', function (err) { console.log(err) })
                            .pipe(fs.createWriteStream(dest))
                            .on('close', callback);

                    };

                    final_list.forEach(function (str) {
                        var filename = str.split('/').pop();

                        console.log('Downloading ' + filename);

                        promises.push(new Promise(function p(resolve, reject) {

                            download(str,  './public/server/img/' + filename, function () {

                                console.log('Finished Downloading' + " " + filename);
                                resolve(filename);
                            }); // add error callback also, call reject() on error
                        }
                        ));
                    });

                    Promise.all(promises)
                        .then(function d(filenames) {
                            done(null, filenames);
                        })
                        .catch(function e(error) {
                            done(error);
                        })
                });

0 ответов

Другие вопросы по тегам