关于在python中获取CGI之POST请求data块内容
来源:互联网 发布:思科软件下载 编辑:程序博客网 时间:2024/06/14 03:12
如题,今天困扰了我一会儿的一个问题。
客户端在制作一个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 sysraw_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?
后续有空找源码看看了。不过目前有解决方案就好。有知道原因的请多多指教。
- 关于在python中获取CGI之POST请求data块内容
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在php中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- HTTP AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- Main方法
- [题解]ACMer 2013 Daily Training- 1st Mar for 11x&&12x
- php 验证码步骤和代码
- 项目2:日期结构体
- Structs2拦截器详解
- 关于在python中获取CGI之POST请求data块内容
- QTextEdit捕捉回车信号
- JAVA学习:高级加密标准(AES)
- read(), readline(), readlines()方法的使用
- Tomcat并发数优化的方法总结
- CRM
- POJ-3268-Silver Cow Party
- 第一部分 基本语言 第七章 函数(7.5局部对象)
- arm-linux-insight的使用