我是靠谱客的博主 诚心鞋子,这篇文章主要介绍nodejs下载图片保存到本地分析源url,创建本地目录以及解析出新的写入路径下载并写入删除大于100k的文件,现在分享给大家,希望可以做个参考。

我们经常在使用别人图片url的时候发现图片显示不了,很可能对方做防盗链处理。在浏览器端有这个限制但是在后端就没有这个问题了。所以我们可以通过图片的url在服务端将这个图片下载下来保存在服务器上,然后客户端去访问我们自己的服务器,为了保证最小的改动,最好是保持原来url的图片路径,我们只需要换url前面的域名就可以了。

分析源url,创建本地目录以及解析出新的写入路径

使用mkdirSync函数同步的进行循环递归创建目录

复制代码
1
2
3
4
5
6
7
8
9
10
11
function mkdirSync(dirname) { if (fs.existsSync(dirname)) { return true; } else { if (mkdirSync(path.dirname(dirname))) { fs.mkdirSync(dirname); return true; } } return false }

如:http://api.3inns.cn/mito/uploadImages/2015/355/17/8032VO7EM87O_113.jpg,的图片路径应该是:
当前目录/mito/uploadImages/2015/355/17/8032VO7EM87O_113.jpg

下载并写入

复制代码
1
request(url).pipe(fs.createWriteStream(dstpath))

完整代码如下:

复制代码
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
var request = require('request') var fs = require('fs') var path = require('path') const dirname = 'uploadImages' const hostdir = "./public/mito/" function mkdirSync(dirname) { if (fs.existsSync(dirname)) { return true; } else { if (mkdirSync(path.dirname(dirname))) { fs.mkdirSync(dirname); return true; } } return false } function downloadUrl(urlList) { for (const url of urlList) { const first = url.indexOf(dirname) const last = url.lastIndexOf('/') if (first > 0 && last > 0) { const name = url.substr(last + 1) const dir = url.substr(first, last - first) const dstpath = hostdir + dir + '/' + name if (name.length && dir.length && !fs.existsSync(dstpath)) { if (mkdirSync(hostdir + dir)) { console.log(dstpath) request(url).pipe(fs.createWriteStream(dstpath)) } } } } }

删除大于100k的文件

复制代码
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
var exec = require('child_process').exec; var fs = require('fs') var path = require('path') var util = require('util') const hostdir = path.join(__dirname, 'uploadImages') const readAllFilePathSync = (function() { const resultList = [] return { execute: function execute(dir) { if (fs.existsSync(dir)) { const stats = fs.statSync(dir) if (stats.isFile()) { resultList.push(dir); } else if (stats.isDirectory()) { const subdir = fs.readdirSync(dir) if (subdir.length) { subdir.forEach(function(sub) { execute(path.join(dir, sub)) }) } } } }, result: function() { return resultList; } } }()) readAllFilePathSync.execute(hostdir); readAllFilePathSync.result().forEach(function(path) { //path = path.replace(/\/g, '\\'); // windows路径 const stats = fs.statSync(path) if (stats.size > 100 * 1024) { exec('rm -f ' + path) console.log(path) } })

最后

以上就是诚心鞋子最近收集整理的关于nodejs下载图片保存到本地分析源url,创建本地目录以及解析出新的写入路径下载并写入删除大于100k的文件的全部内容,更多相关nodejs下载图片保存到本地分析源url,创建本地目录以及解析出新内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部