📜  Flask –文件上传

📅  最后修改于: 2020-10-25 11:32:58             🧑  作者: Mango


在Flask中处理文件上传非常容易。它需要将其enctype属性设置为“ multipart / form-data”的HTML表单,然后将文件发布到URL。 URL处理程序从request.files []对象获取文件,并将其保存到所需位置。

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

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

app.config[‘UPLOAD_FOLDER’] Defines path for upload folder
app.config[‘MAX_CONTENT_PATH’] Specifies maximum size of file yo be uploaded – in bytes

以下代码具有“ / upload” URL规则,该规则显示来自模板文件夹的“ upload.html” ,以及“ / upload-file” URL规则,该规则调用uploader()函数处理上传过程。

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

您将看到如下所示的屏幕。

烧瓶文件上传

选择文件后,单击提交。 Form的post方法调用“ / upload_file” URL。基础函数uploader()执行保存操作。

以下是Flask应用程序的Python代码。

from flask import Flask, render_template, request
from werkzeug import secure_filename
app = Flask(__name__)

@app.route('/upload')
def upload_file():
   return render_template('upload.html')
    
@app.route('/uploader', methods = ['GET', 'POST'])
def upload_file():
   if request.method == 'POST':
      f = request.files['file']
      f.save(secure_filename(f.filename))
      return 'file uploaded successfully'
        
if __name__ == '__main__':
   app.run(debug = True)