关于在python中获取CGI之POST请求data块内容
2013-03-04 21:14
375 查看
如题,今天困扰了我一会儿的一个问题。
客户端在制作一个bug自动上报机制时,需要服务器给提供一个cgi自动把bug发生时的日志及截图等上传到服务器。
因为需要传递大量数据(日志文件或图片?),使用POST方法。
客户端把日志文件写在了这个HTTP请求的content 段中,从抓包结果来看,我需要把这个没有名字的内容获取并保存下来。
尝试几种方法:
1)使用cgi.FieldStorage().file.read()方法。
类似这样:
可是却是data is None. 似乎form.file is None.奇怪ing. 失败!
2)使用fp来读取。
对于CGI模块,python的帮助文档写的不够详细,我想找一下对应的源码看,没找到,汗。。。此方法也未奏效。
3)使用另一种
结果真的可以哦? 把content内容读取到了raw_data中了。注意这里要把raw_data = sys.stdin.read()这块放在调用form = cgi.FieldStorage()之前执行,否则读取到的为空。
我测试了一下确实如此。怀疑在cgi.FieldStorage()内部处理后把stdin里的都吃掉了。网上有文章说,如果使用cgi.FieldStorage()后,可以通过file.read()来获取raw post data。但是我试过却不行,why?
后续有空找源码看看了。不过目前有解决方案就好。有知道原因的请多多指教。
客户端在制作一个bug自动上报机制时,需要服务器给提供一个cgi自动把bug发生时的日志及截图等上传到服务器。
因为需要传递大量数据(日志文件或图片?),使用POST方法。
客户端把日志文件写在了这个HTTP请求的content 段中,从抓包结果来看,我需要把这个没有名字的内容获取并保存下来。
尝试几种方法:
1)使用cgi.FieldStorage().file.read()方法。
类似这样:
form = cgi.FieldStorage() if form.file is not None: data = form.file.read() else: print "data is None"
可是却是data is None. 似乎form.file is None.奇怪ing. 失败!
2)使用fp来读取。
filedata = '' MAXBYTES = 1024*1024*5 while len(filedata) < MAXBYTS: data = form.fp.readline() if data == '': break filedata += data print("content-length:%d"%len(filedata))
对于CGI模块,python的帮助文档写的不够详细,我想找一下对应的源码看,没找到,汗。。。此方法也未奏效。
3)使用另一种
import sys raw_data = sys.stdin.read() ... form = cgi.FieldStorage()
结果真的可以哦? 把content内容读取到了raw_data中了。注意这里要把raw_data = sys.stdin.read()这块放在调用form = cgi.FieldStorage()之前执行,否则读取到的为空。
我测试了一下确实如此。怀疑在cgi.FieldStorage()内部处理后把stdin里的都吃掉了。网上有文章说,如果使用cgi.FieldStorage()后,可以通过file.read()来获取raw post data。但是我试过却不行,why?
后续有空找源码看看了。不过目前有解决方案就好。有知道原因的请多多指教。
相关文章推荐
- cgi怎么获取页面请求参数(get、post两种请求)
- python---get/post请求下载指定URL返回的网页内容,出现gzip乱码处理。设置Accept-Encoding为gzip,deflate,返回的网页是乱码
- php发送get、post请求获取内容的几种方法
- php发送get、post请求获取内容的几种方法
- java通过HttpServletRequest获取post请求中的body内容
- python网络爬虫学习(一)通过GET和POST方式获取页面内容
- php使用fsockopen函数发送post,get请求获取网页内容的方法
- python3 网络爬虫(三)利用post请求获取网页的动态加载数据
- php使用fsockopen函数发送post,get请求获取网页内容的方法
- 如何用PYTHON的CGIHTTPSERVER模块模拟POST请求?
- PHP模拟POST请求,获取response内容
- python3.x上post发送json内容的请求
- python爬虫:处理POST请求(获取有道翻译翻译结果)学习笔记
- php发送get、post请求的几种方法 以及获取内容
- 11.1 python之webpy获取请求参数,把数据库结果放到List,Retrofit Post
- python---get请求https的页面,并获取html返回的内容信息
- 关于IEajaxpost请求无法获取数据的BUG
- java通过HttpServletRequest获取post请求中的body内容的方法
- 表单中多个请求参数名字相同,服务器到底获取的是哪个请求参数的值,表单的action和get和post提交方式的关系以及提交数据的不同点
- 在Global.asax文件的Application_BeginRequest中获取request请求内容