当我们使用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的图片也同样不会有中文名称。

比如像下面这样:

image-20230816134256588

image-20230816162342972

但实际上,Windows自带的截图工具的命名规则是:屏幕截图 +截图时的时间(年-月-日 时分秒)

例如:屏幕截图 2023-08-16 153546.png

所以,当我们使用其他方式将截图复制过来时,(除非你重命名)上传的图片名称都带有中文。能够正常上传oss,但是在博客网站(如CSND)时就会上传失败。

当我们使用WPS等工具给截图进行批注后,再将图片拖动,或复制粘贴到Typora上,图片可能就会因为名称带有中文而在博客网站上传失败。像下面这样:(下面这几张图名称中都含有中文,待会上传时肯定会出错)

image-20230816164725090

2023-08-16 163053

(刚刚查了一下,因为oss实际在解析文件名时,会先将传给oss的文件名按做中文字符转为 unicode 值,所以我们的URL路径中才会出现一堆%之类的)文章

现在,我把我的这篇文章复制到CSDN。

image-20230816171517870

不出所料,刚才名称中含有中文的那两张图片没有上传成功。

我们在阿里云的OSS管理界面可以看到,我们的图片时能够正常上传到OSS的,但是,问题在于,含有中文名称的图片的URL它会变为一堆乱码,导致我们将其复制到博客网站时无法上传。

顺口提一句:这里的URL虽然乱码,但是是仍然可以访问的,将其复制到浏览器搜索框中仍然可以正常下载图片

image-20230816165551456

image-20230816170125339

经过我的不完全统计,我所有含中文名称的图片URL都是一堆乱码,且无法直接上传到博客网站。下面说一说我的解决方法。

解决方法

方法一:手动重命名图片

如果你使用的是WPS,可以在编辑好图片后,将鼠标移动到左上角更改图片名称再保存图片。

其他工具也是类似,在复制之前将图片重命名为不含中文的名称。

image-20230816144837307

方法二:在PicGo设置中,打开“上传前重命名”

但这样做的缺点就是,上传每一张图片时都需要确认“文件改名”很麻烦。但如果你复制的每一张图片都是含中文名称的,这样做也挺好。

image-20230816145105063

image-20230816145158067

方法三:在Typora中重新上传图片

如果你已经将含有中文名称的图片复制到Typora了,那么有一个更加简单的方法,不许要你再将图片一张张的复制到博客网站。方法如下:

在Typora中找到含有中文名称的图片,右键,点击复制图片,然后再右键粘贴。图片就会重新上传,且这次上传的图片不含中文。

含有中文名称的图片URL中一般都会有%

image-20230816165249489

image-20230816165527173

image-20230816170029319

强烈建议在上传文件时,尽量避免使用中文或特殊字符作为文件名,以免出现不必要的问题。