懒人工具-一键上传博客图片到七牛对象存储

现在越来越多的博客采用静态页面的形式, 这样做的好处有很多, 一来由于是静态页面, 安全问题不用考虑, 二是我们可以用自己喜欢的编辑器在本机上用markdown编写博客, 本地留存md文件。

缺点是博客图片管理不是很方便, 于是就有了下文。

首先将需要上传的图片统一放在一个文件夹中, 博客标题名字可以当做文件夹名。

之后, 运行我们的程序, 输入文件夹地址, 然后敲个回车就好啦。 然后通过七牛给的外网(例如我的外网地址为: http://7xs4ug.com1.z0.glb.clouddn.com)连接加上我们的图片名就可以访问啦。

1.png

2.png

如上图, 我们就可以直接复制图中红色的链接到我们的博客中啦。四不四很方便呀~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# -*- coding: utf-8 -*-

from qiniu import Auth, put_file, etag
import os

############################ 处理中文编码 ############################
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

############################ settings ############################

AK = '****************************************'
SK = '****************************************'
bucket_name = 'demo'

#########################################################################

q = Auth(AK, SK)

localfile_path = raw_input("请输入要上传的文件夹: ")
files = os.listdir(localfile_path)

localfiles = [os.path.join(localfile_path, i) for i in files]

keys = [os.path.join('blog',"/".join(i.rsplit('/', 2)[-2:])) for i in localfiles]

# print keys

for key, localfile in zip(keys, localfiles):
# print key, localfile
token = q.upload_token(bucket_name, key, 3600)
ret, info = put_file(token, key, localfile)
print info
print 'http://7xrahm.com1.z0.glb.clouddn.com/' + ret['key']
print "------------------------------------------------------------------"
assert ret['key'] == key
assert ret['hash'] == etag(localfile)

另外有一个图形化版本的 : )

3.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# -*- coding: utf-8 -*-
from tkinter import *
import tkMessageBox
from qiniu import Auth, put_file, etag
import os


############################ 处理中文编码 ############################
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

############################ settings ############################

AK = '****************************************'
SK = '****************************************'
bucket_name = 'blog'

#########################################################################

def upload():

q = Auth(AK, SK)

localfile_path = entry.get()
files = os.listdir(localfile_path)

localfiles = [os.path.join(localfile_path, i) for i in files]

keys = [os.path.join('blog',"/".join(i.rsplit('/', 2)[-2:])) for i in localfiles]

# print keys

for key, localfile in zip(keys, localfiles):
# print key, localfile
token = q.upload_token(bucket_name, key, 3600)
ret, info = put_file(token, key, localfile)
print info
print "------------------------------------------------------------------"
assert ret['key'] == key
assert ret['hash'] == etag(localfile)

tkMessageBox.showinfo('提示', '上传成功')


if __name__ == '__main__':
root = Tk()
Label(root, text="请输入路径: ").pack()
entry = Entry(root, width=80)
entry.pack()

Button(root, text='确 定', command=upload).pack()

root.mainloop()

好啦, 还有什么不懂的, 可以给我留言哟~ : )