picgo正确设置重命名文件,避免同文件重复上传

1.问题来源

在之前配置picgo+阿里云oss图床的博客中,我提到了需要开启picgo的时间戳重命名功能,以避免同名文件冲突。

  • 阿里云OSS默认策略:同名文件会被覆盖

现在看来,这个方法还是有一个缺点:那就是没有办法避免同一个文件的多次上传

说白了就是,我有一个图片,结果因为自己不小心多复制了几次,导致picgo多次上传了这个文件。再加上时间戳不同,之前上传的图片并不会被覆盖,而是留在那儿无人问津;

亦或者是开启了typora下图中对于网络位置的图片应用上述规则,同一个图片需要在一篇文章中出现两次,复制的时候,因为开启了该策略,typora自动帮你又上传了一遍;

image-20230124000807862

1.1 说明

阿里云OSS的空间是要付费的!对于个人博客图床而言,或许并不需要多少空间(本人使用阿里云OSS做图床已有1年,才用了980mb)

今天为了迁移其中一个bucket,发现了里面有非常非常多的重复文件,文件大小内容完全一致,这就是无意义的空间浪费,对于容量计费的oss来说,这可都是💴啊!

所以我们需要一个标识文件的方法,避免同一个文件的多次上传。

比较好的办法,那就是用文件的hash值来命名这个文件。此时,同一文件的hash值是一样的,上传到oss里面之后会直接覆盖,并不会多占用一份空间!我们的目的也就达到了

2.使用picgo插件解决

插件开源地址 liuwave/picgo-plugin-rename-file

2.1 安装

我的picgo是2.3.1版本的,能直接在插件市场安装

image-20230124001818568

安装好了之后,在这里配置

image-20230124002213414

2.2 配置

遵循仓库readme里面的配置方法

image-20230124002110651

这里我选择了比较简单的配置方法,年+月+哈希值

1
{y}/{m}/{hash}

这么做是为了避免hash值碰撞,虽然同一人能人工弄出两个hash碰撞的图片的可能性及其低,但加上一个年份和月份,可能性就更低了😂

这样就能保证在同一月上传的图片中,如果有相同图片会直接覆盖,不会多占用一份空间。

至于其他选项,参考文档。个人觉得没有太大必要,毕竟都上传到图床了,谁还管这个文件的原名和本地存储路径是什么呢?

3.收工

设置完毕之后,现在上传的图片命名格式如下

1
20234d48b94bd1054488005eb239741c807d.png

再次手动上传一遍这个文件,发现返回的url是相同的

我们的目的就达到了!