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)