开源的Hexo图片备份工具,通过在本地环境启动Nodejs程序,进行图片上传操作,使用了smms图床,七牛云对象存储,以及本地存储
Nodejs 8.9+
MongoDB 4+
Hexo 3+
七牛云开发者账户
在程序根目录创建config.js
module.exports = {
static_Dir: 'upload',
control_String: '',
website_Domain: [],
mongoose_ConnectString: 'mongodb://127.0.0.1:12345/Blog_Pic',
qiniu_AccessKey: '',
qiniu_SecretKey: '',
qiniu_Bucket: '',
qiniu_Zone: ''
}
配置项 | 类型 | 对应功能 |
---|---|---|
static_Dir | String | 静态资源目录,本地上传的目录 |
mongoose_ConnectString | String | MongoDB连接串 |
control_String | String | 操作验证字符串,用于上传和删除时做验证 |
website_Domain | Array | 网站域名,用于服务器部署时的跨域处理 |
qiniu_AccessKey | String | 七牛开发者AccessKey |
qiniu_SecretKey | String | 七牛开发者SecretKey |
qiniu_Bucket | String | 七牛存储空间名 |
qiniu_Zone | String | 七牛云存储机房 |
其中,机房对应的对象如下:
- 华东 Zone_z0
- 华北 Zone_z1
- 华南 Zone_z2
- 北美 Zone_na0
git clone [email protected]:Dandan1314/Blog_Pics.git
cd Blog_Pics
yarn
修改配置文件之后启动程序,默认监听4832端口
yarn start
程序启动后,可以根据直接访问静态资源目录的方式来访问本地文件
http://localhost:4832/2019/06/06/5cf8ab8ceeaf169784.jpg
同理,在图床程序异常时,可以通过部署到一台主机实现临时的图片加载
将文件上传到MSSM/七牛云,在本地进行存储
PUT
请求URL :
/upload
字段 | 字段类型 | 字段说明 |
---|---|---|
file | File | 要上传的图片 |
controlString | String | config.js配置文件中的操作验证字符串 |
{
"createPicRes": {
"_id": "5cf8ab8d60bbae1ec41f9721",
"width": 2,
"height": 2,
"filename": "upload_b2ddb277ca75be6c6bcc363e0ccb8a47.jpg",
"storename": "5cf8ab8ceeaf169784.jpg",
"size": 3220,
"path": "/2019/06/06/5cf8ab8ceeaf169784.jpg",
"hash": "W5X9pkyaQEcRFtA",
"timestamp": 1559800716,
"ip": "221.239.96.186",
"url": "https://i.loli.net/2019/06/06/5cf8ab8ceeaf169784.jpg",
"delete": "https://sm.ms/delete/W5X9pkyaQEcRFtA",
"__v": 0
},
"qiniuUploadRes": {
"hash": "FvEbXabBEH9s0IOcRdrKIwBboSu7",
"key": "2019/06/06/5cf8ab8ceeaf169784.jpg"
},
"hexoUrl": "{% img_path /2019/06/06/5cf8ab8ceeaf169784.jpg %}"
}
字段 | 字段类型 | 字段说明 |
---|---|---|
createPicRes | Object | 上传到SMMS返回的结果 |
qiniuUploadRes | Object | 上传到七牛返回的结果 |
hexoUrl | Object | 在HEXO中添加的图片信息 |
将传到图床的图片和本地的图片删除
DELETE
请求URL :
/delImg/:controlString/:fileName
字段 | 字段类型 | 字段说明 |
---|---|---|
fileName | String | 图片名,即上传到smms返回的storename |
controlString | String | config.js配置文件中的操作验证字符串 |
{
"res": "删除成功"
}
如果有上传失败,根据控制台报错信息进行处理
- 在HEXO根目录_config.yml 添加
img_path: 'https://i.loli.net'
配置项,用于指定图片地址 - 在模版的scripts目录下(不存在这个目录新建一个),创建siteUrl.js,内容如下
'use strict';
const config = hexo.config;
hexo.extend.tag.register('img_path', function (args) {
return `<img src="${config.img_path + args[0]}" style="margin: 6px 0;width:${args[1] ? args[1]+'px' : "auto"};height:${args[2] ? args[2]+'px' : 'auto'}"/>`;
});
- 更新模版,清理HEXO并重新生成
- 复制上传返回的 "hexoUrl" 即 {% img_path /2019/06/06/5cf8ab8ceeaf169784.jpg %}
- 可以通过配置第三个和第四个参数的方式,控制图片宽高
- 在要插入图片的位置粘贴
就MIT吧,懒得改了