在Flask中处理文件上传非常容易,它需要将HTML 表单的enctype属性设置为" multipart/form-data",URL处理程序从 request.files[] 对象获取文件信息,并将其保存到所需位置。
首先将每个上载的文件保存在服务器上的临时位置,然后再保存到其最终位置,目标文件的名称可以是硬编码的,也可以从 request.files [file] 对象的filename属性中获取。但是,建议使用 secure_filename()函数获取其安全版本。
可以在Flask 对象 的配置设置中定义默认上载文件夹的路径和上载文件的最大大小。
app.config ['UPLOAD_FOLDER'] | 定义上传文件夹的路径 |
app.config ['MAX_CONTENT_PATH'] | 指定要上传的文件的最大大小-以字节为单位 |
以下代码具有'/upload' URL规则,该规则显示模板文件夹中的'upload.html'和'/upload-file'调用 uploader()函数处理上传过程的URL规则。
" upload.html" 具有文件selector按钮和提交按钮。
<html> <body> <form action="http://localhost:5000/uploader" method="POST" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit"/> </form> </body> </html>
您将看到如下所示的屏幕。
选择文件后,点击提交。表单的post方法调用"/upload_file" URL。基础函数 uploader()执行保存操作。
以下是Flask应用程序的Python代码。
from flask import Flask, render_template, request from werkzeug import secure_filename app=Flask(__name__) @app.route('/upload') def upload_file(): return render_template('upload.html') @app.route('/uploader', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': f=request.files['file'] f.save(secure_filename(f.filename)) return 'file uploaded successfully' if __name__ == '__main__': app.run(debug=True)
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)