Как на самом деле загрузить файл с помощью Flask WTF FileField

в моем 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, но файл не находится ни в одном из каталогов проекта.

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))

на форме.имя файла.файл, звони.сохранить".

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 / имя пользователя/.bashrc следующее".

использование ОС.путь.join будет генерировать правильный абсолютный путь независимо от того, на какой ОС вы находитесь.


Я просто должен был позвонить .сохраняйте форму.имя файла.файл.save

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