概述
图片下载
一.需求
1.json
文件刷选出imageUrl
2.下载的图片必须保存载与json
文件同名的文件夹中
3.将json
文件中原网络地址改为json
文件本地路径
二.分析
1. 采用node
2.获取存储数据data
文件夹中的文件目录
3.遍历目录,获取json
文件中,图片imgUrl
4.下载imgUrl
,保存到本地目录中
5.将json
文件中的imgUrl
改为本地路径
三.代码实现分解
1.引入模块
let fs = require('fs'); //引入文件读取模块
let request = require('request')
2.获取data
的文件目录
let list = fs.readdirSync('./Data')
console.log(list) // [ 'diet.json', 'healthplan.json', 'materials.json' ]
3.遍历list
,读取每个json
文件,获取imgUrl
路径
list.forEach(file=>{
// 可以通过 递归的方式获取imageUrl,
// 也可以通过正则匹配,我这里主要介绍正则匹配
let contentText = fs.readFileSync(`./Data/${file}`,'utf-8');
let arr = contentText.match(/http[s]?://.+.(jpg|gif|png)/g)
})
只截取某一个json
文件中的部分:
4.通过获取到的imageUrl
将图片下载到本地
arr.forEach((url,idx)=>{
let filename = url.split('/').pop() // 已原网络图片的名称命名本地图片
request({url}).pipe(
fs.createWriteStream(`./images/${filename}`).on('close',err=>{ console.log('写入失败',err) })
)
})
图片都被保存在images
文件夹下,且文件名都使用原名称保存
5.我想将本地json
文件中的imageUrl
网络地址改为 本地地址
可以直接使用正则匹配出图片地址,将原地址替换,可以使用replace
,但是之前使用过match
匹配过,为了节省一次匹配,我打算将方法3中的正则修改为
let arr = []
contentText = contentText.replace(/http[s]?://.+.(jpg|gif|png)/g,res=>{
let filename = res.split('/').pop()
arr.push(res) // 匹配到的地址存于 arr中
return `./images/${filename}` // 同时将contentText 中的内容修改
})
// 将json 文件重新写入
fs.writeFile(`./Data/${file}`, contentText,res=>{
console.log(res)
})
四.代码实现
let fs = require('fs');//引入文件读取模块
let request = require('request')
let list = fs.readdirSync('./Data')
list.forEach(file => {
let contentText = fs.readFileSync(`./Data/${file}`,'utf-8');
let arr = []
contentText = contentText.replace(/http[s]?://.+.(jpg|gif|png)/g,res=>{
let filename = res.split('/').pop()
arr.push(res)
return `.images/${filename}`
})
arr.forEach((url,idx)=>{
let filename = url.split('/').pop()
request({url}).pipe(
fs.createWriteStream(`./images/${filename}`).on('close',err=>{
console.log('sdfsd',err) })
)
})
fs.writeFile(`./Data/${file}`, contentText,res=>{
console.log(res)
})
})
以上是我个人总结,如果您还有更好的方法,欢迎指正,谢谢!
最后
以上就是野性万宝路为你收集整理的node 下载图片到本地的全部内容,希望文章能够帮你解决node 下载图片到本地所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复