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

Ответ 1

Мне просто нужно было вызвать .save на form.fileName.file.save

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

Ответ 2

Вы посмотрели на это:

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

Вы должны установить несколько конфигураций, таких как UPLOAD_FOLDER и т.д. Вам также нужно вызвать функцию save(), которую я не вижу в вашем опубликованном коде для views.py.

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

Ответ 3

В файле form.fileName.ll вызовите '.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 будет генерировать правильный абсолютный путь независимо от того, на какой ОС вы находитесь.