Http client to POST using multipart/form-data
转载一段python代码,通过urllib2使用multipart/form-data来发送文件
import httplib, mimetypesdef post_multipart(host, selector, fields, files):""" Post fields and files to an http host as multipart/form-data.fields is a sequence of (name, value) elements for regular form fields.files is a sequence of (name, filename, value) elements for data to be uploaded as filesReturn the server's response page.""" content_type, body = encode_multipart_formdata(fields, files)h = httplib.HTTP(host)h.putrequest('POST', selector)h.putheader('content-type', content_type)h.putheader('content-length', str(len(body)))h.endheaders()h.send(body)errcode, errmsg, headers = h.getreply()return h.file.read()def encode_multipart_formdata(fields, files):""" fields is a sequence of (name, value) elements for regular form fields.files is a sequence of (name, filename, value) elements for data to be uploaded as filesReturn (content_type, body) ready for httplib.HTTP instance""" BOUNDARY = '----------ThIs_Is_tHe_bouNdaRY_$'CRLF = '\r\n'L = []for (key, value) in fields:L.append('--' + BOUNDARY)L.append('Content-Disposition: form-data; name="%s"' % key)L.append('')L.append(value)for (key, filename, value) in files:L.append('--' + BOUNDARY)L.append('Content-Disposition: form-data; name="%s"; filename="%s"' % (key, filename))L.append('Content-Type: %s' % get_content_type(filename))L.append('')L.append(value)L.append('--' + BOUNDARY + '--')L.append('')body = CRLF.join(L)content_type = 'multipart/form-data; boundary=%s' % BOUNDARYreturn content_type, bodydef get_content_type(filename):return mimetypes.guess_type(filename)[0] or 'application/octet-stream'
建议将httplib.HTTP更换为httplib.HTTPConnection,这样一来就能在httplib.Connection初始化的时候传入一个timeout,以实现更灵活的控制。
参阅:
http://code.activestate.com/recipes/146306/
http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2
Http client to POST using multipart/form-data相关推荐
- 1. 恼人的Multipart form data
文章目录 1. 概述 2. 问题 3. 解决方案 3.1 解决方案一 3.2 解决方案二 3.3 解决方案三 4. 总结 1. 概述 我目前在公司负责开放平台项目,使用spring-cloud-gat ...
- flux读取不到数据_WebFlux 中form data获取不到参数问题
Spring WebFlux 中, request.queryParams 只能获取到 查询参数, 对于 form 提交的参数无法进行参数自动装载 处理方式有两种: 一. 自定义 ArgumentRe ...
- vue axios POST请求中参数以form data和request payload形式的原因
HTTP请求中,如果是get请求,那么表单参数以name=value&name1=value1的形式附到url的后面,如果是post请求,那么表单参数是在请求体中,也是以name=value& ...
- 获取referer中的请求参数_Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法...
本文实例讲述了Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法.分享给大家供大家参考,具体如下: HTTP请求中,如果是get请求,那么 ...
- AJAX POST请求中參数以form data和request payload形式在servlet中的获取方式
HTTP请求中,假设是get请求,那么表单參数以name=value&name1=value1的形式附到url的后面,假设是post请求,那么表单參数是在请求体中,也是以name=value& ...
- form data和request payload的区别
2019独角兽企业重金招聘Python工程师标准>>> HTML <form> 标签的 enctype 属性 在下面的例子中,表单数据会在未编码的情况下进行发送: < ...
- java request payload_前后端联调之Form Data与Request Payload,你真的了解吗?
前言 做过前后端联调的小伙伴,可能有时会遇到一些问题.例如,我明明传递数据给后端了,后端为什么说没收到呢?这时候可能就会就会有小伙伴陷入迷茫,本文从chrome-dev-tools(F12调试器)中看 ...
- http协议的Request Payload 和 Form Data 的区别
Request Payload VS Form Data 前端请求 我看了前端发起的请求,请求正文并不是我熟悉的 Form Data,而是 Request Payload.如图注意下面两个请求的 Co ...
- Vue-resource中post请求将data数据以request payload转换为form data的形式
今天在做项目的时候 需要往api中发送一个json格式的对象,但是怎么改都不行,当然,使用的vue 的 http方法. 而且,开始使用时 vue-resource中post请求时的一个坑,vue-re ...
- angularjs中$http模块发送post请求request payload转form data
背景: ionic+ angularjs+ cordova 在开发一个证书照片删除的时候,后端提供了一个post接口,需要前端将数据转化成form data.而在angularjs中,如果直接用pos ...
最新文章
- springmvc教程--RESTful支持详解
- 服务网关zuul之二:过滤器--请求过滤执行过程(源码分析)
- 编程心得体会_生信编程语言的经验之谈
- linux 内网服务 端口,LINUX 内网设备将服务映射到公网地址
- TensorFlow激励函数
- 17-03-21 课堂笔记
- Ogre引擎渲染系列之Normal Specular Mapping
- Excel如何对合并单元格数据进行排序
- csdn头像怎么改不了解决方法
- YOLO v5 实现目标检测(参考数据集自制数据集)
- R语言并行计算spearman相关系数
- MVC、MVP、MVI、MVVM 和 VIPER 设计模式
- HADOOP HA之NameNode HA集群配置与应用
- 创维YS代工E900V21E/TY1608-S905l3B-8822CS及7668无线通刷线刷包
- html背景飘汽水气泡,HTML5网页背景气泡上升
- 【HTML5学习笔记】HTML5:生活要对我下手了吗
- 小程序使用百度ai审核文本与图片信息
- win10强制进入恢复模式(win10强制进入恢复模式不能修复)
- Inkscape裁剪图片(pdf,svg,png,jpg)
- 【办公自动化】批量生成文件夹乱码解决方案
热门文章
- springboot-aop
- OC省字典的数组摘要集
- Android下异步扫描视频文件缩略图
- hibernate总结一
- ADO.NET数据访问模式
- JWT(JSON Web Token) 多网站的单点登录,放弃session 转载https://www.cnblogs.com/lexiaofei/p/7409846.html...
- 转:oracle常见重要视图-v$sql,v$sql_plan,v$sqltext,v$sqlarea,v$sql_plan_statistcs
- python中filter、map、reduce的区别
- python学习笔记(五):装饰器、生成器、内置函数、json
- Yii2 Lesson - 03 Forms in Yii