How to actually upload a file using Flask WTF FileField


Question

In my forms.py file I have I have

    class myForm(Form):
       fileName = FileField()

In my views.py file I have

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

In my .html file I have

     {% 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 %}

and it seems to work when I hit submit but the file is not in any of the project directories.

1
11
1/29/2013 6:09:26 PM

Accepted Answer

I just had to call .save on form.fileName.file.save

    myFile = secure_filename(form.fileName.file.filename)
    form.fileName.file.save(PATH+myFile)
8
1/29/2013 6:47:38 PM

Have you looked at this:

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

You have to set a few configs such as UPLOAD_FOLDER etc. You also have to call the save() function which I don't see in your posted code for views.py.

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

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon