批量下载pdf至本地问题
发布于 6 年前 作者 xuj2017 3446 次浏览 来自 问答

需要批量下载线上的pdf文档,我用download模块实现下载功能

var arr = [{
        url: "http://pdf.dfcfw.com/pdf/H2_AN201803271111860450_1.pdf",
        name: "601500通用股份2017年年度报告"
    },

    {
        url: "http://pdf.dfcfw.com/pdf/H2_AN201803281112695091_1.pdf",
        name: "601555东吴证券2017年年度报告"
    }]
	
Promise.all(arr.map(x => download(x.url, 'dist',{filename:x.name+'.pdf'}))).then(() => {
    console.log('files downloaded!');
}).catch((error)=>{
    console.log(error)
})

在下载过程中,总会在下载二十几个或者四十个的时候停止,报如下错误 image.png

请问下有什么好的方式可以解决?

6 回复

目录不存在,fs-extra ensureFile

@MiYogurt 对啊,会在下载到一大半的时候,报这样的问题,不知道为啥

@MiYogurt 能提示一下何种情况会导致目录不存在?

不确定你准备下载的数量是多少,建议先控制一下并发数 具体做法可以是用bluebird的Promise.map(items, {concurrency: 20})这种

另外,这个就是全部代码了么?

@Shasharoman 找到原因了,命名问题,window系统文件命名不允许有< > / \ | : " * ?,去掉就好了

看了报错,第一感觉就是文件名有问题。以前遇到过类似的坑。

回到顶部