【问题标题】:How to actually upload a file using Flask WTF FileField如何使用 Flask WTF FileField 实际上传文件
【发布时间】:2013-01-13 09:45:12
【问题描述】:

在我的 forms.py 文件中,我有

    class myForm(Form):
       fileName = FileField()

在我的 views.py 文件中

    form = myForm()
    if form.validate_on_submit():
        fileName = secure_filename(form.fileName.file.filename)

在我的 .html 文件中,我有

     {% block content %}
     <form action="" method="post" name="simple" enctype="multipart/form-data">
        <p>
           Upload a file
             {{form.fileName()}}
         </p>
        <p><input type="submit" value="Submit"></p>
     </form>
     {% endblock %}

当我点击提交时它似乎工作但文件不在任何项目目录中。

【问题讨论】:

    标签: python python-2.7 flask flask-wtforms


    【解决方案1】:

    你看过这个吗:

    https://flask.palletsprojects.com/en/2.0.x/patterns/fileuploads/#uploading-files

    您必须设置一些配置,例如 UPLOAD_FOLDER 等。您还必须调用我在您发布的 views.py 代码中没有看到的 save() 函数。

    file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
    

    【讨论】:

    • 对不起,我不是故意要投反对票的,一定是不小心点击了,现在我不能再投反对票了!
    【解决方案2】:

    在 form.fileName.file 上,调用“.save”。

    filename = secure_filename(form.fileName.file.filename)
    file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
    form.fileName.file.save(file_path)
    

    确保使用secure_filename() 来防止用户输入错误的文件名,例如“../../../../home/username/.bashrc”。

    无论您使用什么操作系统,使用 os.path.join 都会生成正确的绝对路径。

    【讨论】:

      【解决方案3】:

      我只需要在 form.fileName.file.save 上调用 .save

          myFile = secure_filename(form.fileName.file.filename)
          form.fileName.file.save(PATH+myFile)
      

      【讨论】:

        猜你喜欢
        • 2019-05-22
        • 2018-03-15
        • 1970-01-01
        • 1970-01-01
        • 2020-01-02
        • 1970-01-01
        • 2011-04-18
        • 2021-05-21
        • 2018-04-29
        相关资源
        最近更新 更多