用 Flask 处理文件上传很简单。只要确保我们没忘记在 HTML 表单中设置 enctype="multipart/form-data" 属性,不然我们的浏览器根本不会发送文件。同时已上传的文件存储在内存或是文件系统中一个临时的位置,我们可以通过请求对象的 files 属性访问它们。
每个上传的文件都会存储在这个字典里。它表现近乎为一个标准的 Python file 对象,但它还有一个 save() 方法,这个方法允许你把文件保存到服务器的文件系统上。我们来看一个实例:
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 属性。但请记住, 永远不要信任这个值,这个值是可以伪造的。如果你要把文件按客户端提供的文件名存储在服务器上,那么请把它传递给 Werkzeug 提供的 secure_filename() 函数 :
from flask import request from werkzeug import secure_filename @app.route('/upload', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': f = request.files['the_file'] f.save('/var/www/uploads/' + secure_filename(f.filename)) ...
好啦,本次记录比较简单,所以就到这里了。
如果感觉不错的话,请多多点赞支持哦。。。