Flask 文件上傳

2022-08-16 10:43 更新

在 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 文件夾下:




以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)