1 from qiniu import Auth, put_file, etag, put_data
2 import qiniu.config
3 from flask import current_app
4
5
6 def upload_img(data):
7 """
8 上传二进制数据到七牛云
9 :param data: 二进制数据
10 :return:
11 """
12
13 # 需要填写你的 Access Key 和 Secret Key
14 access_key = current_app.config["QINIU_ACCESS_KEY"]
15 secret_key = current_app.config["QINIU_SECRET_KEY"]
16
17 # 构建鉴权对象
18 q = Auth(access_key, secret_key)
19
20 # 要上传的空间名称
21 bucket_name = current_app.config["QINIU_BUCKET_NAME"]
22
23 # 上传后保存的文件名
24 # 如果不指定保存的文件名称,七牛云会自动生成一个唯一的图片名称
25 # 哈希值
26 key = None
27
28 # 生成上传 Token,可以指定过期时间等 3600单位是s
29 token = q.upload_token(bucket_name, key, 3600*24)
30
31 # 要上传文件的本地路径
32 # 将图片二进制数据上传到七牛云
33 ret, info = put_data(token, key, data)
34
35 print(ret)
36 print(info)
37 if info.status_code == 200:
38 # 上传图片成功
39 # 拼接完整url地址
40 full_url = current_app.config["QINIU_DOMAIN"] + ret["key"]
41 return full_url
42 else:
43 # 封装好的工具类异常需要抛出,不能私自解决异常 否则外界调用遇到异常没法解决
44 raise Exception(info.exception)
45
46
47 if __name__ == '__main__':
48 # with app.app_context(): #若要测试就打开这一行
49 with open('C:/Users/Administrator/Desktop/2.0.jpg', 'rb') as f:
50 data = f.read()
51 full_url = upload_img(data)
52 print(full_url)