在 Flask 中处理文件上传是很容易的,只要确保在 HTML 表单中设置 enctype=“multipart/form-data” 属性。
<form action="/pathtoupload" method="post" enctype="multipart/form-data"> <p><input type="file" name="filename"></p> <p><input type="submit" value="submit"></p> </form>上传的文件存储在内存中,可以通过请求对象 request 的 files 属性访问。
f = requests.files['filename'];每一个上传的文件都存储在其字典中,表现为标准的 Python 文件 file 对象,比之多了一个保存文件 save() 的方法,用以将文件保存到文件系统中。
f.save(pathtosave)一个文件上传的简单例子
from flask import request @app.route('/upload', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': f = request.files['the_file'] f.save('/var/www/uploads/uploaded_file.txt')上传的文件的文件名在 filename 属性中
filename = f.filename不过这个名字是系统外的,如果想要使用它,需要记住要使用 werkzeug 提供的 secure_filename 方法进行保存。
from werkzeug.utils import secure_filename ... f.save('/var/www/uploads/' + secure_filename(f.filename))总结
在 HTML 表单 form 中,设置 enctype=multipart/form-data 属性,并且添加 <input type=file> 标签。Flask 应用在 请求对象 request 中通过 files 字典访问文件。使用 save() 方法保存文件。