如何使用Flask WTF FileField实际上载文件

2024-04-27 22:51:39 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的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 %}

当我点击submit时,它似乎可以工作,但是文件不在任何项目目录中。


Tags: 文件pyformifformsfilenamevalidateviews
3条回答

你看过这个吗:

http://flask.pocoo.org/docs/patterns/fileuploads/#uploading-files

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

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

在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将生成正确的绝对路径,无论您在哪个操作系统上。

我刚打电话给form.fileName.file.save

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

相关问题 更多 >