博客图片上传解决方案:PicGo+Typora

如你所见,本博客网站静态生成后由Nginx托管在ECS上,而我个人写作的习惯一般是先在本地Typora中写好markdown再通过MobaXterm上传。

众所周知,markdown内容本身只是文字、链接。这就导致一个问题:上传文章的同时,需要把文章中引用到的本地图片打包上传。

并且,由于Hexo自身的机制,在Markdown中引用相对路径的方式和windows下markdown的常规语法还不一样(可见hexo资源文件夹说明),我不仅要上传图片文件,还要把文章中的所有本地引用替换为asset_img标签。

这也太麻烦了,有啥更好的方法?

其实,更好的解决方案就藏在上面的描述中:只要图片不是在本地,让hexo渲染生成的时候通过网络请求图片就可以了!

那这样就又产生了两个新的问题:

  • 如果本来引用的图片是在本地,那么必然还是要先将它上传到网络上,上传这个动作如何完成?
  • 上传到哪里?

问题一,无非就两种思路:一种是手动上传(和原来的方案没什么区别,没意思了),一种是借助工具自动上传;

问题二,我们的目标应当是能够让hexo渲染时能获取到文件,但文件的控制权又在自己手里。但如果还是上传至ECS的话,文件多了后可能会对本机的主体业务造成影响,增加运行压力。最重要的是当ECS过期了,文件的整体迁移也是一个大问题。

基于这两个问题,我们解决问题的思路就很明确了:Typora中粘贴图片时自动上传。询问度娘后,我们发现这种图片的需求可以借助PicGo+OSS对象存储来解决。

  • OSS与ECS不同,没有操作系统、命令终端。因此使用方式主要是直接通过调用文件上传和获取的API进行文件存储相关操作。

  • 至于PicGo,就是这个相关API的调用者。当Typora检测到图片粘贴的动作,会唤起PicGo去执行文件上传。

这样,我们的图片在markdown中以http链接的形式存在,无论是在本地的Typora还是云端的博客网站都可以获取到了!

具体的实现过程我参考了这篇文章:《Typora+阿里云OSS(将图片上传到阿里云服务器上)》,具体细节这里就不赘述了。

注意在PicGo中设置存储区域的时候要填阿里云OSS界面Endpoint的域名前缀(比如oss-cn-beijing)

另外自定义域名处填bucket域名,否则typora粘贴后是不会显示图片的。

image-20230214231404644

祝好

图片来自https://bing.ioliu.cn/


博客图片上传解决方案:PicGo+Typora
https://dockingyuan.top/2023/02/14/Picture-OSS/
作者
Yuan Yuan
发布于
2023年2月14日
许可协议