【教程】解决七牛云图片外链生效 - 5402 获取bucket域名失败
前段时间忙完一波,想要回来继续把机器学习的课程笔记写完,突然发现博客园里的所有图片都显示不了,通过外链打开,发现报错:
{"error":"no such domain"}
一直用的是七牛云的图床,赶紧登陆个人产品下的对象存储,之前bucket里的图片都还在,但是一直提示:
5402 获取bucket域名失败
而且也下载不了,上网Google了一下,说是七牛云测试域名要回收,新申请的测试域名也只有30天有效期,如果想继续使用的话,需要绑定域名,还得是备案过的,很是麻烦。于是想着还是换了吧,实在没心思再去折腾域名备案。
解决思路:
一. 下载七牛云上的图片到本地;
二. 利用GitHub做图床;
三. 更新博客中的图片链接。
具体步骤:
一. 下载图片到本地
七牛云上之前的bucket里的图片已经没办法下载了,点击下载链接没有反应。不过还好,我们可以曲线救国,在七牛云里新建一个存储空间,然后把之前的图片复制到新存储空间里,就可以手动下载图片了。当然啦,七牛云提供了工具qshell,让我们能批量copy和download对象。
1. 下载qshell,解压到文件目录下,并把这个目录放置于系统环境变量里;
2. 修改qshell_windows_x64.exe为qshell.exe(以windows 64位为例);
3. windows下用cmd命令窗口,执行命令添加账号(AK/SK在七牛云的 个人中心->密钥管理 里查看):
qshell account [<AccessKey> <SecretKey> <BucketName1>]
4. 导出bucket里的文件信息:
qshell listbucket BucketName1 > file.txt
5. 提取第一列的文件名称,linux下可以用awk命令,windows下可以用其它文字编辑工具或excel提取下:
awk "{print $1}" file.txt > file.txt
6. 批量复制文件到之前新建的bucket里:
qshell batchcopy BucketName1 BucketName2 -i file.txt
7. 利用qdownload批量下载文件:
a)编写一个qdownload.conf的配置文件,写法见说明:
{ "dest_dir" : "D:\\Program\\qshell\\image", "bucket" : "kplayer2", "prefix" : "", "suffixes" : "", "cdn_domain" : "http://xxxxxxx.bkt.clouddn.com", "referer" : "", "log_file" : "download.log", "log_level" : "info", "log_rotate" : 1, "log_stdout" : false }
b)执行命令,查看下载文件和日志:
qshell qdownload qdownload.conf
二. 利用GitHub做图床
文件下载到本地后,可以找新的图床了,如果选用腾讯COS的话可以参考这篇文章。
如果有GitHub账号的话,直接就用GitHub做图床也很方便,连接已经不像多年前那样不稳定,速度也不会太慢,基本能满足个人Blog需求。
新建repository -> 新建issue -> 起个标题,上传或拖延图片进去,自动生成URL
关于GitHub做图床的高级用法,可以参考这篇文章。
三. 更新博客图片链接
如果是服务器上的博客就好办多了,直接用写个脚本替换就好。但是博客园上的文章,就不太清楚如何批量替换了,好在文章和图片不多,我就手工更新了一下,如果有图片错误的欢迎指出,或者如果有好的批量更新方法,也欢迎提供。