Flask 文件上傳

在Flask中處理文件上傳非常簡(jiǎn)單。 它需要一個(gè)enctype屬性設(shè)置為'multipart/form-data'的HTML表單,將該文提交到指定URL。 URL處理程序從request.files[]對(duì)象中提取文件并將其保存到所需的位置。

每個(gè)上傳的文件首先保存在服務(wù)器上的臨時(shí)位置,然后再保存到最終位置。 目標(biāo)文件的名稱可以是硬編碼的,也可以從request.files [file]對(duì)象的filename屬性中獲取。 但是,建議使用secure_filename()函數(shù)獲取它的安全版本。

可以在Flask對(duì)象的配置設(shè)置中定義默認(rèn)上傳文件夾的路徑和上傳文件的最大大小。

變量說明
app.config[‘UPLOAD_FOLDER’]定義上傳文件夾的路徑
app.config[‘MAX_CONTENT_PATH’]指定要上傳的文件的最大大小 - 以字節(jié)為單位

以下代碼具有URL: /upload 規(guī)則,該規(guī)則顯示templates文件夾中的upload.html文件,以及調(diào)用uploader()函數(shù)處理上傳過程的URL => /upload-file規(guī)則。

upload.html有一個(gè)文件選擇器按鈕和一個(gè)提交按鈕。

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Flask示例</title>
 </head>
    <body>
      <form action = "http://localhost:5000/upload" method = "POST" 
          enctype = "multipart/form-data">
          <input type = "file" name = "file" />
          <input type = "submit" value="提交"/>
       </form>
    </body>
 </html>

將看到如下截圖所示 -

上傳文件

選擇文件后點(diǎn)擊 提交。 表單的post方法調(diào)用URL=> /upload_file。 底層函數(shù)uploader()執(zhí)行保存文件操作。

以下是Flask應(yīng)用程序的Python代碼。

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
from flask import Flask, render_template, request
 from werkzeug import secure_filename
 app = Flask(__name__)
 @app.route('/upload', methods=['GET', 'POST'])
 def upload_file():
     if request.method == 'POST':
         f = request.files['file']
         print(request.files)
         f.save(secure_filename(f.filename))
         return 'file uploaded successfully'
     else:
         return render_template('upload.html')
 if __name__ == '__main__':
     app.run(debug = True)

運(yùn)行程序后,執(zhí)行上面代碼,選擇一個(gè)圖片文件,然后點(diǎn)擊上傳,得到以下結(jié)果 -

運(yùn)行程序,上傳成功

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清