W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在 Flask 中處理文件上傳非常簡(jiǎn)單。它需要一個(gè) HTML 表單,其 ?enctype
? 屬性設(shè)置為“?multipart/form-data”
?,將文件發(fā)布到 URL。
URL 處理程序從 ?request.files[]
? 對(duì)象中提取文件,并將其保存到所需的位置。
每個(gè)上傳的文件首先會(huì)保存在服務(wù)器上的臨時(shí)位置,然后將其實(shí)際保存到它的最終位置。
目標(biāo)文件的名稱可以是硬編碼的,也可以從 ?request.files[file]
?對(duì)象的? filename
?屬性中獲取。
但是,建議使用 ?secure_filename()
? 函數(shù)獲取它的安全版本。
可以在 Flask 對(duì)象的配置設(shè)置中定義默認(rèn)上傳文件夾的路徑和上傳文件的最大大小。
app.config['UPLOAD_FOLDER'] 定義上傳文件夾的路徑
app.config['MAX_CONTENT_LENGTH'] 指定要上傳的文件的最大大?。ㄒ宰止?jié)為單位)
以下代碼具有 ?'/upload'
?URL 規(guī)則,該規(guī)則在 templates 文件夾中顯示? 'upload.html'
?,以及 ?'/upload-file'
?URL 規(guī)則,用于調(diào)用 ?uploader()
?函數(shù)處理上傳過(guò)程。
?'upload.html'
?有一個(gè)文件選擇器按鈕和一個(gè)提交按鈕。
<html>
<head>
<title>File Upload</title>
</head>
<body>
<form action="http://localhost:5000/uploader" method="POST" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="提交" />
</form>
</body>
</html>
您將看到如下所示的界面。
選擇文件后,單擊提交。
表單的? post
?方法調(diào)用? '/upload_file'
? URL。
底層函數(shù) ?uploader()
? 執(zhí)行保存操作。
以下是 Flask 應(yīng)用程序的 Python 代碼。
from flask import Flask, render_template, request
from werkzeug.utils import secure_filename
import os
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'upload/'
@app.route('/upload')
def upload_file():
return render_template('upload.html')
@app.route('/uploader',methods=['GET','POST'])
def uploader():
if request.method == 'POST':
f = request.files['file']
print(request.files) f.save(os.path.join(app.config['UPLOAD_FOLDER'], secure_filename(f.filename)))
return 'file uploaded successfully'
else:
return render_template('upload.html')
if __name__ == '__main__':
app.run(debug=True)
注意:app.config['UPLOAD_FOLDER'] = 'upload/'
upload 前面不能加“/”。
上傳成功會(huì)顯示以下畫(huà)面:
上次文件被放到根目錄的 upload 文件夾下:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: