English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Téléchargement de fichiers Flask

在Flask中处理文件上传非常简单。 它需要一个enctype属性设置为'multipart/form-data'的HTML表单,将该文提交到指定URL。 URL处理程序从request.files[]对象中提取文件并将其保存到所需的位置。

每个上传的文件首先保存在服务器上的临时位置,然后再保存到最终位置。 目标文件的名称可以是硬编码的,也可以从request.files [file]对象的filename属性中获取。 但是,建议使用secure_filename()函数获取它的安全版本。

可以在Flask对象的配置设置中定义默认上传文件夹的路径和上传文件的最大大小。

变量说明
app.config['UPLOAD_FOLDER']定义上传文件夹的路径
app.config['MAX_CONTENT_PATH']指定要上传的文件的最大大小 - 以字节为单位

以下代码具有URL: /upload 规则,该规则显示templates文件夹中的upload.html文件,以及调用uploader()函数处理上传过程的URL => /upload-file规则。

upload.html具有一个文件选择器按钮和一个提交按钮。

# Nom de fichier : example.py
# Droits d'auteur : 2020 By w3codebox
# Auteur par : fr.oldtoolbag.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>

将看到如下截图所示 -

选择文件后点击 提交. La méthode POST du formulaire appelle l'URL => /upload_file. La fonction de basse couche uploader() effectue l'opération de sauvegarde de fichier.

Voici le code Python de l'application Flask.

# Nom de fichier : example.py
# Droits d'auteur : 2020 By w3codebox
# Auteur par : fr.oldtoolbag.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 'Fichier téléchargé avec succès'
     else:
         return render_template('upload.html')
 if __name__ == '__main__':
     app.run(debug=True)

Après l'exécution du programme, exécutez le code ci-dessus, sélectionnez un fichier image, puis cliquez sur télécharger pour obtenir le résultat suivant -