解决Typora+阿里云+PicGo部分图片上传失败的问题
当我们使用Typora+PicGo+阿里云的方式,将在Typora上写的博客导入、复制到博客网站时,部分图片可能会出现下面这种情况:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3xt3RIT1-1692154574350)
检查发现,阿里云OSS的Bucket权限也是设置为公共读的,上传的图片也没有超过5M。类似的解决方法都尝试过还是没能解决问题。
如果你的URl中,图片的名称类似于“%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-08-16%20134509.png”
这样的话,那么
你很可能是这个原因:图片名为中文
如果使用电脑自带的截图直接在剪切板粘贴的图片,那就不会出现上面的问题。
当然,你在这个截图工具中编辑图片后,再点击右上角的复制按钮,然后粘贴到Typora的图片也同样不会有中文名称。
比如像下面这样:
但实际上,Windows自带的截图工具的命名规则是:屏幕截图 +截图时的时间(年-月-日 时分秒)
例如:屏幕截图 2023-08-16 153546.png
所以,当我们使用其他方式将截图复制过来时,(除非你重命名)上传的图片名称都带有中文。能够正常上传oss,但是在博客网站(如CSND)时就会上传失败。
当我们使用WPS等工具给截图进行批注后,再将图片拖动,或复制粘贴到Typora上,图片可能就会因为名称带有中文而在博客网站上传失败。像下面这样:(下面这几张图名称中都含有中文,待会上传时肯定会出错)
(刚刚查了一下,因为oss实际在解析文件名时,会先将传给oss的文件名按做中文字符转为 unicode
值,所以我们的URL路径中才会出现一堆%之类的)文章
现在,我把我的这篇文章复制到CSDN。
不出所料,刚才名称中含有中文的那两张图片没有上传成功。
我们在阿里云的OSS管理界面可以看到,我们的图片时能够正常上传到OSS的,但是,问题在于,含有中文名称的图片的URL它会变为一堆乱码,导致我们将其复制到博客网站时无法上传。
顺口提一句:这里的URL虽然乱码,但是是仍然可以访问的,将其复制到浏览器搜索框中仍然可以正常下载图片
经过我的不完全统计,我所有含中文名称的图片URL都是一堆乱码,且无法直接上传到博客网站。下面说一说我的解决方法。
解决方法
方法一:手动重命名图片
如果你使用的是WPS,可以在编辑好图片后,将鼠标移动到左上角,更改图片名称,再保存图片。
其他工具也是类似,在复制之前将图片重命名为不含中文的名称。
方法二:在PicGo设置中,打开“上传前重命名”
但这样做的缺点就是,上传每一张图片时都需要确认“文件改名”很麻烦。但如果你复制的每一张图片都是含中文名称的,这样做也挺好。
方法三:在Typora中重新上传图片
如果你已经将含有中文名称的图片复制到Typora了,那么有一个更加简单的方法,不许要你再将图片一张张的复制到博客网站。方法如下:
在Typora中找到含有中文名称的图片,右键,点击复制图片,然后再右键,粘贴。图片就会重新上传,且这次上传的图片不含中文。
含有中文名称的图片URL中一般都会有%
强烈建议在上传文件时,尽量避免使用中文或特殊字符作为文件名,以免出现不必要的问题。