用腾讯云COS制作个人图床
最终实现效果
在图片上右键上传,自动将图片上传到腾讯云上,并生成图片的URL到剪切板中。
准备工作
COS
我们需要一个空间,用于存放图片或者文件,这里推荐使用腾讯云,以下均以腾讯云进行演示。
本地环境
这里以腾讯云接口为例,本地需要node.js
运行环境。
安装node.js
以上链接进去后点击安装LTS版,然后一路next就行了。
安装腾讯云SDK
-
WIN+R
调用运行库,输入cmd,打开控制台。 -
输入
npm i cos-nodejs-sdk-v5 --save -g
C:\Users\Administrator>npm i cos-nodejs-sdk-v5 --save -g
-
进入腾讯云SDK,将整个项目下载下来(github建议翻墙下载)解压后进入解压目录里运行控制台
-
输入
npm install -g
D:\cos-nodejs-sdk-v5-master>npm install -g
这里我是将文件解压在了D盘的根目录下了。
环境变量配置
- 在
windows环境变量
中增加一项NODE_PATH
,最好同时指向2处,例如:C:\Users\Administrator\node_modules
和C:\Users\Administrator\AppData\Roaming\npm\node_modules
最少指向一处。 - 前者对应
npm
的本地安装,后者对应npm
的全局安装,若找不到上面两个文件夹,请先安装nodejs
和腾讯云SDK
。
腾讯云上的设置
-
请到腾讯云注册账号并实名认证,
-
新建存储桶(记得将存储桶访问权限设置为共有读私有写,否则后面会因为权限不足导致返回的链接失效)
-
打开刚刚创建的桶设置,选择域名管理,打开默认加速域名。
-
在腾讯云菜单中找到
CDN
并打开,选择刚刚设置的域名,找到高级配置
中的HTTP Header配置
,添加HTTP Header
。参数选择Content-Disposition
,取值写inline;filename=FileName.txt
-
获取APPID、SecretId、SecretKey、存储桶名称、所属地域(括号里面的英文,ap-xx)
以上步骤请自行阅读腾讯云文档,这里不做说明。
设置并编写脚本
-
WIN+R
调用运行库,输入regedit
打开注册表编辑器 -
找到
计算机\HKEY_CLASSES_ROOT\*\shell
-
在
shell
里面新建项上传腾讯云
,在此项下再次新建项command
,双击到command
里面并修改右侧默认值cmd.exe /K "C:\yunCos\1.bat "%1""
-
在C盘根目录建文件夹:yunCos,新建1.bat,内容如下
@echo off node C:\yunCos\yunCos.js %1% exit
-
新建 yunCos.js文件,内容 如下
var picsuffix=new Array(".jpg", ".png", ".bmp", ".jpeg"); function contains(arr, obj) { var i = arr.length; while (i--) { if (arr[i] === obj) { return true; } } return false; } var filepath=process.argv.splice(2).toString(); var filename = filepath.substring(filepath.lastIndexOf("\\")+1); var today = new Date(); var year = today.getFullYear(); var month = today.getMonth() + 1; var urlkey=year+"/"+(month<10?'0'+month:month)+"/"+filename; var suffix=filename.substring(filename.lastIndexOf("."), filename.length); // 引入模块 var COS = require('cos-nodejs-sdk-v5'); // 创建实例 var cos = new COS({ AppId: '*', // 修改为自己的appid SecretId: '*',// 修改为自己的SecretId SecretKey: '*',// 修改为自己的SecretKey }); // 分片上传 cos.sliceUploadFile({ Bucket: '*',// 修改为自己的存储桶名称,由英文、数字和标点符号组成 Region: 'ap-guangzhou',// 修改为自己的所属地域,应该是纯英文的部分 Key: urlkey, FilePath: filepath }, function (err, data) { if(err){ console.log(err); } else{ console.log(data); const util = require('util'); var url=''; if (contains(picsuffix, suffix)) { url='![](https://'+data.Location+')';//这里返回的url是md格式,需要可自行更改 } else { url='[](https://'+data.Location+')';//这里返回的url是md格式,需要可自行更改 } require('child_process').spawn('clip').stdin.end(url); } });
在任意文件上点击右键,选择 上传腾讯云 会有脚本框一闪而过,找个文本框粘贴下就会有图片的URL了
参考博客
个人博客