html代碼核心
<body>
{% set file_name=filename %}
<form role="form" action="/update/" method="post" enctype="multipart/form-data">
<div class="form-group">
<input name="name" type="text"/>
<button type="submit" class="btn btn-danger">提交</button>
<input name="files" type="file"/>
</div>
</form>
<h3>姓名:{{ username }}</h3>
<img alt="圖片丟失了" onerror="this.src='http://image.biaobaiju.com/uploads/20180928/16/1538124027-aMtYOyIRzC.jpeg'"
style="width: 80px; height: 80px;" src="{{ url_for('static',filename=file_name)}}">
</body>
注意:enctype="multipart/form-data"
很關(guān)鍵
后臺(tái)代碼
@front.route('/update/', methods=["GET", "POST"])
def up_pic():
if request.method == "POST":
name = request.form["name"]
try:
file = request.files.get("files")
#寫的絕對(duì)路徑袜蚕,可自己修改
path_static="D:\Python_project\Todo_api\static\img"
up_path=os.path.join(path_static,file.filename)
#seession保存用戶名和圖片名稱,圖片名稱加個(gè)img/前綴袜炕,為了和html中匹配
session['filename']="img/"+file.filename
session['username']=name
#文件保存
file.save(up_path)
except:
print("沒(méi)傳文件")
return redirect(url_for('.up_pic'))
else:
filename=session.get("filename")
username=session.get("username")
data={
'filename':filename,
'username':username
}
return render_template("front/index.html",**data)
上傳圖片到七牛
在七牛注冊(cè)锰扶,并創(chuàng)建對(duì)象存儲(chǔ)
- 服務(wù)器返回七牛token憑證
@app_v1.route("/uptoken/")
def up_token():
access_key=""
secret_key=''
q=qiniu.Auth(access_key,secret_key)
bucket='todo'
token=q.upload_token(bucket)
return jsonify({'token':token})
在客戶端献酗,比如android,可以請(qǐng)求該地址拿到token,然后在執(zhí)行上傳坷牛,上傳文件會(huì)把圖片上傳上去罕偎,并且會(huì)返回一個(gè)key,這個(gè)key就可以在后臺(tái)和model綁定寫到數(shù)據(jù)庫(kù)中漓帅,展示的時(shí)候就是七牛的域名+文件名
锨亏。前端的操作都一樣,只是代碼寫法不一樣忙干,