七牛云图床外链失效之解决办法

简述

前段时间发现博客中的图片外链全都失效了,原因是使用的七牛云的测试域名被收回,然而打开控制平台发现图片无法直接下载,参考网上的博客成功找回,于是便记录下来。

具体找回步骤

下载小工具

首先需要下载七牛云提供的一个小工具 qrsctl,我下载的是 windows版本,链接中包含教程和具体的用法。

下载完成后的文件名为:qrsctl-v3.2.20170501,最好放在一个新建的文件夹中操作。

登录

下载完成后,需要登录。打开cmd,进入到指定的文件夹即 qrsctl 工具存放的文件夹,输入如下命令

qrsctl-v3.2.20170501 login <七牛云账号> <七牛云密码>
查看Buckets

登录之后输入如下命令查看所有的 Buckets

qrsctl-v3.2.20170501 buckets

image

我这里只有一个存放图片的 Buckets 名为: pictures

查看所有图片

查看该 pictures 下面的所有图片,注意替换 Buckets 名称

qrsctl-v3.2.20170501 listprefix pictures ""

image

下载图片

通过以下命令可下载图片,注意替换 Buckets 和图片名称

qrsctl-v3.2.20170501 get pictures path.png path.png

image
执行完成后,该图片就会下载到当前文件夹中,当然也可以指定存放文件的路径。

批量下载

由于图片上百张,一张一张下载图片太麻烦,因此用 Java 写了个小程序批量下载。实现代码如下:

实现代码(Java)
public class RecoverPictures {

    public static void main(String[] args) {
        recover();
    }

    public static void recover() {

        String listPic = "qrsctl-v3.2.20170501 listprefix pictures \"\" ";  //注意 pictures 是 buckets名称
        String downloadPic = "qrsctl-v3.2.20170501 get pictures ";
        String picPath = "D:\\Tools\\picc";  //存放图片的目录
        Runtime runtime = Runtime.getRuntime();
        int i = 0;
        try {
            String[] command = {"cmd", "/c", listPic};
            Process process = runtime.exec(command, null, new File("D:\\Tools"));  //在指定的目录下执行命令
            InputStream in = process.getInputStream();
            InputStreamReader isr = new InputStreamReader(in);
            BufferedReader buffer = new BufferedReader(isr);
            String line = null;
            while( (line = buffer.readLine()) != null ) {
                if("marker:  ".equals(line)) {continue;}  //第一行去除
                i++;
                System.out.println(line);

                //循环下载每张图片至指定的文件夹
                String downloadCmd = downloadPic + line + " " + picPath + "\\" + line;  //下载图片命令
                String[] command2 = {"cmd", "/c", downloadCmd};
                runtime.exec(command2, null, new File("D:\\Tools"));

                //休眠 1s, 防止程序执行过快丢失图片
                Thread.sleep(1000);
            }
            System.out.println("共下载图片总数:" + i );
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}

image
程序执行完成后,发现实际下载的图片数量不对,缺失了几张,仔细检查后发现:有的图片文件名中带有空格,导致下载失败。
解决办法:文件名添加双引号!
如下:

qrsctl-v3.2.20170501 get pictures "parallel old.png"  "parallel old.png"
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页