Flask 文件上傳

2022-08-16 10:43 更新

在 Flask 中處理文件上傳非常簡單。它需要一個 HTML 表單,其 ?enctype? 屬性設置為“?multipart/form-data”?,將文件發(fā)布到 URL。

URL 處理程序從 ?request.files[]? 對象中提取文件,并將其保存到所需的位置。


每個上傳的文件首先會保存在服務器上的臨時位置,然后將其實際保存到它的最終位置。

目標文件的名稱可以是硬編碼的,也可以從 ?request.files[file] ?對象的? filename ?屬性中獲取。

但是,建議使用 ?secure_filename()? 函數(shù)獲取它的安全版本。


可以在 Flask 對象的配置設置中定義默認上傳文件夾的路徑和上傳文件的最大大小。

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ù)處理上傳過程。

?'upload.html' ?有一個文件選擇器按鈕和一個提交按鈕。

<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 應用程序的 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 前面不能加“/”。 

上傳成功會顯示以下畫面:


上次文件被放到根目錄的 upload 文件夾下:




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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號