在我的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 %}
当我点击提交时它似乎有效,但该文件不在任何项目目录中。
答案 0 :(得分:21)
http://flask.pocoo.org/docs/patterns/fileuploads/#uploading-files
你必须设置一些配置,例如UPLOAD_FOLDER等。你还必须调用我在发布的views.py代码中没有看到的save()函数。
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
答案 1 :(得分:9)
在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都会生成正确的绝对路径。
答案 2 :(得分:8)
我只需要在form.fileName.file.save
上调用.save myFile = secure_filename(form.fileName.file.filename)
form.fileName.file.save(PATH+myFile)