Node批量下载文件到本地的方法介绍(附代码)


当前第2页 返回上一页

在同事的前期调研时,有说这里可以做一个流式的边压缩边下载的能力,大致的思路是,chunk回包,加流式压缩。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

......

 

let fileCounter = 0;

const zippedFilename = encodeURIComponent(downloadData.name);

const list = downloadData.list || [];

const header = {

  'Content-Type': 'application/x-zip',

  'Pragma': 'public',

  'Expires': '0',

  'Cache-Control': 'private, must-revalidate, post-check=0, pre-check=0',

  'Content-disposition': 'attachment; filename="' + zippedFilename + '"',

  'Transfer-Encoding': 'chunked',

  'Content-Transfer-Encoding': 'binary'

};

res.writeHead(200, header);

archive.store = true;

archive.pipe(res);

list.map(item => {

  fileCounter++;

  let inStream = request.get(item.downLoadUrl);

  let name = item.fileName;

  let length = 0;

  inStream.on('response', function(awsData) {

    archive.append(inStream, {

      name: name

    });

  }).on('data', function(data) {

    length += data.length;

  }).on('error', function(e) {

    console.error(name + '-error', e);

  }).on('end', function(endData) {

    fileCounter--;

    if (fileCounter < 1) {

      archive.finalize();

    }

  });

});

archive.on('error', function(err) {

  throw err;

});

archive.on('finish', function(err) {

  return res.end();

});

 

......

当然中间还有些细节需要处理:比如中文文件名的问题,是否需要下载文件总大小做限制,是否会出现文件不存在等等情况。

以上就是Node批量下载文件到本地的方法介绍(附代码)的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

javascript删除字符串最后一个字符

javascript如何转换成数字

js数组怎么转为字符串

javascript作用有哪些

javascript中怎么将json对象转为字符串

react是javascript吗

javascript怎么将数组转为字符串

jquery实现带弹窗和次数的转盘抽奖(代码)

javascript如何转换时间

js中4种数组遍历方法( for 、foreach() 、for/in、for/of)的区别

更多相关阅读请进入《压缩》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...