/*
* typora插入图片调用此脚本,上传图片到图床
*/
const path = require('path')
// minio for node.js
const Minio = require('minio')
const { promises } = require('fs')
// 解析参数, 获取图片的路径,有可能是多张图片
const parseArgv = () => {
const imageList = process.argv.slice(2).map(u => path.resolve(u))
return imageList
}
// 入口
const uploadImageFile = async (imageList = []) => {
// 创建连接
const minioClient = new Minio.Client({
// 这里填写你的minio后台域名
endPoint: 'xxx.xxx.xxx',
port: 80,
useSSL: false,
// 下面填写你的accessKey和secretKey
accessKey: '*************',
secretKey: '*************'
})
// 开始上传图片
const metaData = {}
const tasks = imageList.map(image => {
return new Promise(async (resolve, reject) => {
try {
// 图片重命名,这里采用最简单的,可以根据自己需求重新实现
const name = `${Date.now()}${path.extname(image)}`
// 具体请看Minio的API文档,这里是将图片上传到blog这个bucket上
const res = await minioClient.fPutObject('blog', name, image, metaData)
resolve(name)
} catch (err) {
reject(err)
}
})
})
const result = await Promise.all(tasks)
// 返回图片的访问链接
result.forEach(name => {
const url = `http://xxx.xxx.xxx/blog/${name}`
// Typora会提取脚本的输出作为地址,将markdown上图片链接替换掉
console.log(url)
})
}
// 执行脚本
uploadImageFile(parseArgv())
Node typora插入图片脚本
7 min read