本博客将承载在github上,然而github免费账户仅支持100M,放不了几张图和视频。迫切需要一个第三方图床,七牛是一个很好的选择,免费账号支持10G容量和每月10G流量。

命令行

如何通过web方式使用七牛详见官网说明文档,本文仅探讨命令行方式。七牛提供了一个命令行:qshell,下载后根据OS解压相应的版本,我的操作系统是win7 64bit,所以选择了qshell_windows_amd64.exe,解压路径为d:\qshell,为了少敲几个字母,我将可执行文件更名为qshell.exe。最后将d:\qshell添加到windows的系统变量中。

本地图片存放位置

本博客系统选用的是hugo[1],这是一个类似octopress、hexo的静态博客系统,博客的路径为d:\zlinuxboy-blog-hugo\,图片存放在d:\zlinuxboy-blog-hugo\themes\rapid\static\media中。

图片命名规则建议

图片的命名方式建议为:日期-图片名称.后缀。日期跟博文的文件名前缀一致,譬如本篇博文的文件名为2016-10-30-七牛图床.md,里面有张图片叫2016-10-30-七牛logo.jpg,这样是为了后续方便查找。

基本使用

  • 添加七牛账号的access key和secret key

    $ qshell account <access key> <secret key>
  • 创建config.txt

    $ vim d:\qshell\config.txt
    -----------8<----------
    {
        "src_dir"       :   "E:\\zlinuxboy-blog-hugo\\themes\\rapid\\static\\media",
        "access_key"    :   "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "secret_key"    :   "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "bucket"        :   "zlinuxboy",
        "rescan_local"  :   true
    }
    ----------->8----------
    一定要有rescan_local这个参数,否则后续文件夹中新增的图片就无法上传。
  • 上传图片

    $ qshell qupload config.txt
  • 获取bucket下文件列表

    $ qshell listbucket <Bucket> [<Prefix>] <ListBucketResultFile>

    比如说,我想获得zlinuxboy这个bucket下全部文件的列表:

    $ qshell listbucket zlinuxboy allfile.txt
    $ vim allfile.txt
    2010-10-10-h3c_admin策略.jpg    83435   FkIHFDKN1Z_DwHzv1IWejPlplVes    14778201447947017       image/jpeg
    2010-10-10-sw_core属性.jpg      31825   FhRVw1luFNuKWl-7X5dhEAAeN1vy    14778201450383573       image/jpeg
    2010-10-10-编辑拨入配置文件.jpg 29772   FgibCxoLD-58L8Gi4S1gI987nB3O    14778201452312944       image/jpeg
    2010-10-10-配置VSA-cisco.jpg    16691   Fo_uspKuhKWji_IVLgWoe7ug_hnH    14778201453696672       image/jpeg
    2010-10-10-配置VSA.jpg  17925   FsrfWiyhBRRaagD2y8PDxsl_jeJr    14778201456208891       image/jpeg
    2014-03-29-wget进程.jpg 97678   FsF4nHpHGNRAhlrSUKFf-KdxXfWD    14778302556180796       image/jpeg

外链

前面都是铺垫,都是为了得到最后的外链,以便贴入到博文中。在七牛的web管理页面下很容易获得图片的外链,但是太繁琐,有什么办法可以快速获得外链呢?答案是掐指,因为掐指一算就可以得到外链,实际上外链有一定的规则:http://domain/key

  • domain,七牛提供两种域名:默认和自定义。自定义域名需要在中国备案,默认域名在七牛的web管理页面就可以获得,该域名是固定的,也就是说同一个bucket下的公共外链,其domain是一样的;

  • key,指的是文件名。

那就很简单了,知道了domain和文件名,就可以自行组合成外链了,譬如有个文件名为:2010-10-10-h3c_admin策略.jpg,domain为ofugtm1dt.bkt.clouddn.com,那么该文件的外链就是:http://ofugtm1dt.bkt.clouddn.com/2010-10-10-h3c_admin策略.jpg,需要注意的是,如果文件名是中文,那么通过web所获得的外链中的中文部分是乱码(经过转码?),但是手工组合的外链和web生成的外链是同一个东西,都能找到该图片。


1. update:2016-11,本博客已改成jekyll,但本文依然适用