Node js文件哈希下载以及如何通过分块下载文件

时间:2019-09-10 03:09:29

标签: javascript jquery node.js hash filehash

我想下载文件时要达到的目的是要分块下载或访问它。然后我想检查文件的大小并下载文件的第一个kb,然后将第一个kb的哈希与哈希进行比较如果大小和哈希值相同,则拒绝下载的文件(大小相同),然后拒绝下载,否则继续下载文件。知道如何将其集成到下面的当前代码实现中,谢谢。

目标

  1. 访问文件夹中的文件-恢复下载功能
  2. 检查文件大小
  3. 下载文件的第一个KB
  4. 将第一个kb与下载文件的哈希值进行比较
  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 个答案:

没有答案