flask获取表单以enctype="multipart/form-data"格式发送的数据
来源:互联网 发布:微信小动画制作软件 编辑:程序博客网 时间:2024/06/08 17:21
最早的HTTP POST是不支持文件上传的,给编程开发带来很多问题。但是在1995年,ietf出台了rfc1867,也就是《RFC 1867 -Form-based File Upload in HTML》,用以支持文件上传。所以Content-Type的类型扩充了multipart/form-data用以支持向服务器发送二进制数据。因此发送post请求时候,表单属性enctype共有二个值可选,这个属性管理的是表单的MIME编码:
①application/x-www-form-urlencoded(默认值)
②multipart/form-data
其实form表单在你不写enctype属性时,也默认为其添加了enctype属性值,默认值是enctype=”application/x- www-form-urlencoded”.
当需要上传文件时,需要在form 标签中包含enctype=”multipart/form-data”和method=”post”属性,表单就会以二进制形式提交到服务器
flask 通过request.form.get("keyword")
获取上文提到的两种格式的数据,通过request.files.get("filename")
来获取单个文件通过reuquest.files.getlist("files[]")
来获取多个上传文件
在html代码中,多个上传文件可以通过两种方式获取
①设置多个<input>
标签,需保证name属性值相同,服务器通过reuquest.files.getlist(“files[]”)获取这一组文件
<input type="file" name ="file[]"><input type="file" name ="file[]"><input type="file" name ="file[]">
②设置一个<input type="file" multiple="multiple" name="file[]">
,如此可向一个添加文件按钮中添加多个文件,服务器依然通过reuquest.files.getlist(“files[]”)获取这一组文件
示例代码:
HTML:
<!DOCTYPE html><html><head> <meta charset="utf-8"></meta> <title>测试表单</title></head><body> <form method="POST" action="http://127.0.0.1:5000/form/new" enctype="multipart/form-data"> <p>ID: <input type="text" name="id" /></p> <p>body: <input type="text" name="body" /></p> <p>param1: <input type="text" name="param1" /></p> <input type="file" name="imgs[]"> <input type="file" name="imgs[]"> <input type="file" name="imgs[]"> <br /> <input type="submit" value="Submit" /> </form></body></html>
fpython代码:
import osfrom config import basedir #defined in config #basedir = os.path.abspath(os.path.dirname(__file__))@api.route("/form/new")def new_form():#save image file imgs = request.files.getlist() path = basedir+"/static/imgs/" if not os.path.exists(path): os.mkdir(path) for img in imgs: file_path = path+img.filename img.save(file_path) #save other parameter id = request.form.get("id") body = request.form.get("body") param1 = request.form.get("body") print "id:"+str(id) print "body:"+str(body) print :param1:"+str(param1) return jsonify({})
- flask获取表单以enctype="multipart/form-data"格式发送的数据
- form表单 enctype="multipart/form-data"
- form表单enctype="multipart/form-data"
- 对于form enctype= multipart/form-data 二进制流上传文件,服务器端获取不到表单中其他数据的解决办法。
- 表单form的enctype="multipart/form-data"使用体会
- 表单form的enctype="multipart/form-data"
- 表单form的enctype="multipart/form-data"使用体会
- 表单form的enctype="multipart/form-data"使用体会
- 表单form的enctype="multipart/form-data"使用体会
- 表单form的enctype="multipart/form-data"使用体会
- form表单的Enctype=multipart/form-data
- 表单form 中Enctype=multipart/form-data 的作用
- asp中enctype="multipart/form-data"获取Form表单的值
- enctype="multipart/form-data" 文件上传,获取form 表单参数的问题
- express获取表单中的文件和其他数据(enctype=multipart/form-data)
- enctype="multipart/form-data"中Form参数的获取
- 含有文件的表单处理(ENCTYPE="multipart/form-data")
- 表单中enctype="multipart/form-data"的意思
- openstack相关
- hd2098 分拆素数和
- Storyboard全解析
- Java集合框架面试问题集锦
- Java中注解的应用
- flask获取表单以enctype="multipart/form-data"格式发送的数据
- VC6编译64位程序
- hql更新数据,出错invalid path:....unexpected end of subtree
- OSG智能指针之强指针与弱指针
- #内存管理
- C语言函数栈调用二
- log4j配置
- 黑马程序员 c语言 实现对四百年大润的判定
- Java - Thinking in Java 第6章 访问权限控制