1.注册七牛云
2.创建七牛云的存储空间
3.配置上传的文件
from qiniu import Auth, put_data, etag
#需要填写你的 Access Key 和 Secret Key
access_key = 'ak'
secret_key = 'sk'
def upload_file_qiniu(inputdata):
'''
:param inputdata: bytes类型的数据
:return: 文件在七牛的上传名字
'''
# 构建鉴权对象
q = Auth(access_key, secret_key)
#要上传的空间
bucket_name = 'cars'
#生成上传 Token,可以指定过期时间等
token = q.upload_token(bucket_name)
#如果需要对上传的图片命名,就把第二个参数改为需要的名字
ret1,ret2=put_data(token,None,data=inputdata)
print('ret1:',ret1)
print('ret2:',ret2)
#判断是否上传成功
if ret2.status_code!=200:
raise Exception('文件上传失败')
return ret1.get('key')
4.写一个简单前端
<form method="post" enctype="multipart/form-data" action="http://127.0.0.1:5000/api/v1.0/upload_file">
<input type="file" id="img" name="imgup">
<button type="submit" id="btn">上传图片</button>
</form>
5.后端上传
@api.route('/upload_file',methods=['post','GET'])
def upload_carimg():
if request.method == 'GET':
return render_template('car.html')
if request.method == 'POST':
#todo 1获取前端数据
try:
data = request.files.get('imgup').read()
except Exception as e:
return jsonify(errmsg='获取前端数据错误')
#todo 2使用自定义的上传文件系统,上传图片服务器
try:
filename = upload_file_qiniu(data)
except Exception as e:
return jsonify(errmsg='上传失败',errcode=constant.RET_IMG_UPLOAD_ERR)
return 'ok'