用GET、POST請求上傳圖片并呈現(xiàn)出來
首先還是創(chuàng)建文件上傳的模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上傳圖片</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<div>
<label for="avatar">上傳圖片</label>
<input type="file" id="avatar" name="avatar" value="">
</div>
<button type="submit">提交</button>
</form>
</body>
</html>
然后需要定義幾個函數(shù):
upload():路由函數(shù),接收GET請求時,顯示模板文件內(nèi)容,接收post請求時,上傳圖片
allowed_file():檢測上傳的文件是否滿足設(shè)置的類型
random_file():為上傳的文件重新創(chuàng)建隨機的不重復(fù)文件名
uploaded_file():顯示圖片內(nèi)容
import os.path
import uuid
import config
from flask import Flask,url_for,redirect,request,render_template,send_from_directory
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif','PNG', 'JPG', 'JPEG', 'GIF',}
app=Flask(__name__)
UPLOAD_FOLDER = os.path.join(app.root_path,'uploads')
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/upload',methods=['GET','POST'])
#創(chuàng)建路由函數(shù),接收GET請求時,顯示模板文件內(nèi)容,接收post請求時,上傳圖片
def upload():
"""
#頭像上傳表單頁面
:return:
"""
if request.method=='POST':
#接受頭像字段
avatar=request.files['avatar']
#判斷頭像是否上傳
if avatar and allowed_file(avatar.filename):
filename=random_file(avatar.filename)
avatar.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
return redirect(url_for('uploaded_file',filename=filename))
return render_template('upload.html')
def allowed_file(filename):
"""
#判斷上傳文件類型是否允許
:param filename 文件名
:return: 布爾值 TRUE or False
"""
print(filename)
return '.' in filename and filename.rsplit('.',1)[1] in ALLOWED_EXTENSIONS
def random_file(filename):
"""
生成隨機文件名
:param filename: 文件名
:return:隨機文件名
"""
ext=os.path.splitext(filename)[1]
#使用uuid生成隨機字符
new_filename=uuid.uuid4().hex+ext
return new_filename
@app.route('/uploads/<filename>')
def uploaded_file(filename):
"""
顯示上傳頭像
:param filename:文件名
:return: 真實文件路徑
"""
return send_from_directory(app.config['UPLOAD_FOLDER'],filename)
if __name__=='__main__':
app.run(
debug=True
)
需要單獨設(shè)置的內(nèi)容:
ALLOWED_EXTENSIONS:文件后綴類型
UPLOAD_FOLDER:上傳文件的路徑,如果不設(shè)置,會報錯:
????????????????????????????????KeyError: 'UPLOAD_FOLDER'
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif','PNG', 'JPG', 'JPEG', 'GIF',}
UPLOAD_FOLDER = os.path.join(app.root_path,'uploads')
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
?文章來源地址http://www.zghlxwxcb.cn/news/detail-627723.html
?文章來源:http://www.zghlxwxcb.cn/news/detail-627723.html
?
到了這里,關(guān)于【Python】Web學(xué)習(xí)筆記_flask(3)——上傳文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!