用七牛云存储实现博客图床(二)——制作上传工具
=== 本文所涉及工具的完整代码可以在我的GitHub上找到 ===
开搞
既然我们已经选择了七牛,那就开始吧。
关于怎么注册账号,建立空间这种事情这里就不介绍了,没有什么意义,我自己操作的时候也没记得有什么坑,如果有人有遇到问题可以在下面评论区留言
假如进展一切顺利,我们就在七牛有了一个bucket,这个bucket就是我们存储文件的空间了,在七牛控制台的内容管理界面可以添加上传文件。
呃。。必须吐槽一下,七牛在的后台文件管理实在是太乱了。。只能一下子列出所有文件,不能按照路径前缀来分类,搜索也不能模糊匹配,必须从路径前缀开始输入。而七牛的意思好像是不建议用户在直接在管理后台管理文件,所以提供了一个叫做QRSBox的工具,这是一个可以同步本地某个文件夹的客户端工具。如果要更多的功能就没有了,所以我以后还是想办法自己写一个工具来管理吧。
环境准备
先不扯那么远,我们先从上传开始。最近开始学习用Python,那我们就用肮脏的py来写吧(误)
先到七牛的文档中心找接口,找到Python的文档,嗯需要安装七牛的模块,直接用pip安装就行了。
这里就有坑了,windows用户会比较蛋疼,为了安装一个七牛模块,你可能需要安装pip这个包管理器,为了安装pip你还要安装setuptools。。GG。MacOS就很简单了,如果安装了homebrew,安装所有东西都只是几句话的事情。
所以对于Windows用户来说,最好的方法还是下载安装一个PyCharm,来自JetBrain的Python IDE,这里面自带pip,可视化安装各种模块。
这里我已经安装好了七牛,如果没有的话点右边的加号就能搜索到所有的Python模块,非常方便~
登陆七牛开发者平台,找到自己的Access Key和Secret Key,复制下来,除此之外还要准备好想上传存储空间的bucket名称,自定义域名外链前缀(比如我的是https://qn.inspoy.cc/)。现在我们已经有了4个字符串,OK把他们保存在一个文本文件中。
正片在这里
都准备万全之后开始编写代码,首先要先从这个文本文件中把数据读出来
1 | # load key |
然后创建一个授权对象Auth,用来验证身份,当然不要忘了import七牛的模块
1 | from qiniu import Auth |
使用该授权对象去试图生成一个指定bucket的上传token
1 | # key是bucket中的目标文件名 |
之后检查一下返回值ret的状态,确认上传过程是否成功,如果上传成功的话,info里会存储有本次上传操作的相关信息
1 | assert ret['key'] == key |
注:ETag是七牛用来校验文件的哈希算法,具体请看这里
执行put_file()
后,如果返回值正常,再访问七牛管理后台看看,是不是文件已经被上传上去了
接下来就是输入和结果的校验和GUI了,校验方法详见GitHub上的代码,GUI的话暂时选用了不用安装额外第三方模块的TkInter,虽然很简陋。。但是可以用((<ゝω·)☆)
最后的结果是这个样子的
这篇博客里的所有图片都是用这个工具上传的啦,由图可见,文件组织方式是按日期+原始文件名来的,为以防万一最好还是不要用中文,上传成功后会输出这个文件的外链,复制出来就能直接用啦~
又是喜闻乐见的广告时间
如果你觉得七牛云存储还不错可以一用的话,就用我的推广链接来注册吧~注册成功后我会获得每月5GB的流量←_←