Загрузка хеширования файлов Node js и как скачивать файлы по частям
Чего я хочу достичь при загрузке файла, я хочу загрузить или получить к нему доступ по частям. Затем я хотел проверить размер файла и загрузить первый КБ файла, а затем сравнить хэш первого КБ с хешем загруженного файл (того же размера), затем отклоните загрузку, если размер и хэш совпадают, иначе загрузите файл и продолжите. Любая идея, как я могу интегрировать его в мою текущую реализацию кода. Ниже, спасибо.
Цель
- Доступ к файлам в патронах - функция возобновления загрузки
- Проверить размер файла
- Загрузите первый КБ файла
- Сравните первый килобайт с хешем загруженных файлов
- Если тот же размер отклоняет загрузку (если тот же размер и хеш одинаковы)
- Скачайте файл и двигайтесь дальше
Мой текущий код
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);
})
});