node-批量上传文件

很多项目可能都会涉及到的业务是关于多文件上传的,那么需要使用到redis或者第三方库(使用redis)来实现任务队列,甚至需要控制并发量和分包(一次请求传多个文件),这样每次都会以实现功能来完成,但是不好维护,甚至很麻烦,大家可以了解一下这个包github地址

依赖

"dependencies": {
    "express": "^4.17.1",          -- test
    "mkdirp": "^0.5.1",            -- test
    "multer": "^1.4.2",            -- test
    "bagpipe": "*",                -- 需要修改源码,详见readme.md
    "request": "^2.88.0",
    "request-promise": "^4.2.4"
  }

README.MD

介绍

脱离redis, 基于内存, 批量上传文件到远程服务器,按照设置大小设置每次请求的包的大小和并发数量限制

API

初始化任务队列

Upload.init({
  base_url: 'http://127.0.0.1:3008/',   // 远程目标服务器地址
  check_path: 'check_file',             // 文件校验接口
  upload_path: 'file',                  // 上传接口
});

添加任务

var file_arr = [ 'D:/files/a.test', 'D:/files/b.test' ];
Upload.createJob(file_arr);

执行任务

Upload.process();

查询当前任务状态

const status = await Upload.status();
console.log(status);

TIPS

支持上传的文件可以在./lib/file_ext.json 中添加或修改

[
  {
    "ext": ".png",
    "contentType": "image/png"
  },
  {
    "ext": ".jpeg",
    "contentType": "image/jpeg"
  },
  {
    "ext": "jpg",
    "contentType": "image/jpeg"
  },
  {
    "ext": ".txt",
    "contentType": "text/plain"
  }
]

第三方库:bagpipe 需要修改源码./lib/bagpipe.js 148行为:method.apply(this, args);

猜你喜欢

转载自www.cnblogs.com/hjj94/p/11791143.html