如何使用七牛云做为图床?

Posted on 2015-11-30

题图:七牛云存储

背景

  • 2014年2月开始练千字文
  • 开始接触 Markdown 语法
  • 知道了图床,用免费图床各种不顺心
  • 免费的
    • yupoo:当时100m的免费空间,用了一阵子,很快就爆了
    • 新浪相册:会压缩图片,批量上传老是出问题,老担心他家搞个防盗链
    • 其他国内的免费相册服务,不是界面丑就是速度慢……
    • 国外的图床不敢用,挂了可是个大工程呐,我当时还没备份的习惯……
    • 其他私人搭建的图床,用过几次,挂了
  • 收费的
    • 换过杂七杂八的免费图床
    • 总觉得找免费图床,心神消耗挺大的
    • 我只想好好写博客而已,还是找个收费吧,一了百了
    • 收费的图床在知乎一搜,要么又拍云,要么七牛
    • 注册又拍云,发现不付费不能用呀……放弃了~
    • 注册七牛,发现有 10g 空间体验账户,用起
    • 那时候的我以为 10g 空间是容量,够我用好一阵子,嗯!

选定七牛

  • 2014年3月注册了七牛免费账户(注册后一直没用)
  • 5月搭建博客,常写博客,用 七牛 配图
  • 免费账户 肆无忌惮 地用了一年多,10G 流量终于爆了
  • 这时,我才搞清楚 容量 和 流量 的区别(too young~)
  • 2015年7月,一篇 多图文章 让我欠费了
  • 终于,七牛冻结了账户,果然出来混是要还的
  • 终于,我付费了,使用了标准服务
  • 继续使用 七牛 原因
    • 使用一年多,极其稳定
    • 转移成本极大,积累了近一年的图片……
    • 相比其他平台便宜太多
    • 服务器故障(小用户没啥感觉)给我发过几个红包~标准用户才可以用
  • 购买服务之后,马上将流量大户(1M以上的图片)换了
  • 最近几个月平均消费:每月15元左右
  • 挺好,这消费证明我的博客还有人看……
  • 付费心血教训:上传图片必须限制在 200 k 以内呐
  • 想起以前,2 M 的图片,眼都不眨一下……

以往方案

背景终于啰啰嗦嗦地介绍完了,说说以前我是如何上传并使用七牛图床的吧~

  1. 登录打开七牛云网页个人存储空间
  2. 上传图片
  3. 复制外链
  4. 粘贴到 Markdown

一张图片用了四步呐,想想这篇文章的图片都是如此上传的,还真是作死。

世界并非如你所见——用可供性来发现更大的世界

转折

折腾起来

准备工具及我的配置

  • 七牛账户一枚,或拥有 七牛 的 AccessKey/SecretKey,已有建立的空间
    • 例如我的七牛云空间(bucket)名字就是 cnfeat
    • 假设我的 AccessKey 是 cnfeat1234
    • 假设我的 SecretKey 是 cnfeat5678
  • chrome 浏览器

方法有三

  • 一、七牛云插件上传:简单
  • 二、使用 dropzone 上传:方便
  • 三、使用命令行上传:快捷,尤其适合需要目录及协作的团队

一、七牛云插件上传:简单

二、使用 dropzone 上传:方便

这两篇文章已经写得很清楚了,大家按照以下两篇文章操作即可

使用Dropzone和七牛云存储来优化博客图床

Mac OS 图床运用优化模式 - Microdust

使用命令行上传

现在我就是采用命令行操作,一旦学会了以下的方法,都回不去了。

可实现的效果

  • 将图片拖拽到指定的文件夹
  • 在 CLI 敲入一行命令,文件自动上传至七牛云
    • 例如我使用的命令就是:qrsync /Users/cnfeat/7niu/conf.json
    • 说明:qrsync是指七牛的命令,/Users/cnfeat/7niu/conf.json是配置文件,整个命令的意思是使用七牛的命令来运行配置文件。
  • 在文本快速输入固定地址+图片名,即可获取该图片的地址

说明

  • Mac,Mac 的用户名是 cnfeat,以下的教程请自觉将用户名替换成你的
  • 下载好qrsync 命令行同步工具,得出名为 qrsync 的文件
    • 注:以下的教程只会用到 qrsync 文件。
  • sublime

以下的操作基本是按照七牛云的官方文档 qrsync 命令行同步工具 来操作,如有不明白,请移步官方文档

安装命令行同步工具 qrsync

目的:能在 终端 直接调用 qrsync 命令

  • 下载好qrsync 命令行同步工具,得出名为 qrsync 的文件
  • 方法:将 qrsync 文件放入 /usr/local/bin/
    • 知识点:在/usr/local/bin/出现的 字符 都是可以直接在终端直接调用的命令行
  • 实现方法一:
    • 复制 qrsync 文件
    • 快捷键 Shift+Command+G 打开 /usr/local/bin/
    • 粘贴 qrsync 文件
  • 实现方法二:
    • 直接用复制命令行 cp
    • 打开 终端
    • 输入 cp /Users/cnfeat/Downloads/qiniu-devtools-darwin_amd64-v2.6.20131211/qrsync /usr/local/bin/
    • 意思是复制 Downloads 位置的 qrsync 文件 到 /usr/local/bin/
    • Linux基本命令学习之二—Linux基本命令

配置 conf.json

配置说明:用 conf.json将本地文件与七牛云的通道打通,将本机指定文件上传到指定的空间。

目的:将 conf.json 文件里面的语法填写正确


{
   		 "access_key": "Please apply your access key here",
   		 "secret_key": "Dont send your secret key to anyone",
   		 "bucket": "Bucket name on qiniu resource storage",
   		 "sync_dir": "Local directory to upload",
   		 "async_ops": "fop1;fop2;fopN",
   		 "debug_level": 1
 }

  • 建立 conf.json 文件
    • 用 sublime 新建文档,粘贴以上文本
    • Shift+Command+P 打开 命令面板
    • 输入 json 回车,将文件格式改为 json
    • Command+S,将其保存在/Users/cnfeat/7niu/目录下,文件名保存为 conf
    • 这样 conf.json 文件就新建好
    • 目录地址是/Users/cnfeat/7niu/conf.json

conf.json 文件下载链接: http://pan.baidu.com/s/1mgq5MRY 密码: accm

  • 配置 conf.json
    • https://portal.qiniu.com/setting/key 获取你的AccessKey/SecretKey

    • “bucket” 即你的七牛云空间名字,你的空间名字在七牛网内是唯一的
      • 例如,我的七牛云空间名字是 cnfeat
    • “sync_dir” 是你本地要上传图片文件夹的地址
      • 例如,我就在 Documents 文件夹建了 名为qrsync 的文件夹,并在里面放了一张名为cnfeat-img.jpg的图片
      • 所以,上传地址就是 /Users/cnfeat/Documents/qrsync
    • “async_ops” 是设置上传预转参数,可以留空
    • “debug_level” 默认就好

所以,最终的 conf.json 配置是这样的


{
   		 "access_key": "cnfeat1234",
   		 "secret_key": "cnfeat5678",
   		 "bucket": "cnfeat",
   		 "sync_dir": "/Users/cnfeat/Documents/qrsync",
   		 "async_ops": "",
   		 "debug_level": 1
 }

为了易于区分,我后来将 conf.json 重命名为 cnfeat.json

使用命令行同步

打开终端输入

qrsync /Users/cnfeat/7niu/cnfeat.json 

出现

2015/11/22 20:40:48 [INFO][qbox.us/qrsync/v1] qrsync.go:205: Syncing /Users/cnfeat/Documents/qrsync => cnfeat ...
2015/11/22 20:40:48 [INFO][qbox.us/qrsync/v1] qrsync.go:213: Progress file: /Users/cnfeat/.qrsync/lEfrYxfiWq48qgm95oixXg==.log
2015/11/22 20:40:48 [INFO][qbox.us/qrsync/v1] syncer.go:83: Put /Users/cnfeat/Documents/qrsync/.DS_Store => .DS_Store
2015/11/22 20:40:51 [INFO][qbox.us/qrsync/v1] syncer.go:83: Put /Users/cnfeat/Documents/qrsync/cnfeat-img.jpg => cnfeat-img.jpg
2015/11/22 20:40:51 [INFO][qbox.us/qrsync/v1] qrsync.go:184: Sync done!

显示 cnfeat-img.jpg 图片已经上传成功。

打开 http://cnfeat.qiniudn.com/cnfeat-img.jpg可以看见图片了。

至此,用 命令行 上传图片至 七牛云 的教程完成。

高阶设置

  • 虽然上传图片成功了,但是我想要得到图片外链怎么办?
  • 难道我还要到七牛云网页个人存储空间根据文件名将图片搜出来,然后复制其外链吗?
  • 那也太傻逼了吧

联想

  • 图片上传后外链的地址的前缀是固定的:http://cnfeat.qiniudn.com/
  • Markdown 图片格式是固定的:![](http://cnfeat.qiniudn.com/)
  • 每次同步图片的命令行也是固定的 qrsync /Users/cnfeat/conf.json
  • 联想到 atext 强大

于是

  • 在 atext 设定快捷键
    • ;qr»qrsync /Users/cnfeat/7niu/cnfeat.json
    • ;pi»![](http://cnfeat.qiniudn.com/)

那么最终生成图片外链地址只需要

  1. 终端输入;qr
  2. 文本输入;pi 补充图片名

收工!

PS

想要自定义七牛域名,可登录到七牛空间>空间设置>域名设置:修改默认域名

PPS

如果需要对图片进行缩放、剪切等操作,可参考

经过测试,我发现我只需要以下两项足矣。

  • ?imageMogr2/thumbnail/!50p
    • 将图片缩放50%
  • ?imageMogr2/thumbnail/800x
    • 将图片宽度限定为800,高度等比缩放

更新

qrsync 失效,使用 qshell 命令行,操作方法基本如上

注意

  • 将 qshell 放入 /usr/local/bin/ 需要重启后才能使用该命令行
  • 上传命令更改为 qshell qupload 100 /Users/cnfeat/7niu/omc.json

格式为

{ “src_dir”:”/Users/cnfeat/Nutstore.com/7niu/”, “access_key”: “A”, “secret_key”: “B”, “bucket”: “C”, “rescan_local”: true }

命令行工具(qshell) - 七牛开发者中心

迭代

  • 2017-12-06 更新 qshell 方法
  • 2016-01-24 11:34:51 接受 闪闪 反馈,优化部分说明和图片缩放说明
  • 2015-12-06 17:50:44 补增 域名设置
  • 2015-11-30 14:24:46 补增 背景 描述
  • 2015-11-29 20:08:51 更新 conf.json 目录
  • 2015-11-22 21:15:54

原文链接:如何使用七牛云做为图床?

参考


【六经皆我注脚】

做一名黑客会有很多乐趣,但却是要费很多气力方能得到的乐趣。 这些努力需要动力。成功的运动员从锻炼身体、超越自我极限的愉悦中得到动力。 同样,做黑客,你得能从解决问题,磨练技术及锻炼智力中得到基本的乐趣。

—— Eric S. Raymond 《如何成为一名黑客》


  • 陈素封
  • 公众号:cnfeat
  • Blog:cnfeat.com

(题图:七牛云存储)


加入「笨方法学写作」知识星球,这一次彻底学会写作。
你将:
⬇⬇⬇
  • 1)认知科学解惑:正确理解卡片创作的基本原理;
  • 2)实践养成习惯:循序渐进开始每天写一张卡片;
  • 3)原则善写卡片:掌握运用高手的 10 条认知心法;
  • 4)规范高效创作:模仿组合高手的 10 条行动路径;