通过Apache2.2.22的测试,如果指定了内容长度,python3.3 cgi.FieldStorage()可以很好地工作于多部分/表单数据,但是,如果使用块传输,表单数据是空的。请参阅以下两个测试用例。
Test_input_ok:
POST /cgi-bin/1.cgi?bla=ddd HTTP/1.1
Host: localhost
Content-Type: multipart/form-data; boundary=abcdefghdddddd
Content-Length: 162
--abcdefghdddddd
Content-Disposition: form-data; name="filename"; filename="freemind"
Content-Type: application/octet-stream
aaaaaaaaaa
--abcdefghdddddd--FieldStorage结果可以:FieldStorage(None, None, [MiniFieldStorage('bla', 'ddd'), FieldStorage('filename', 'freemind', b'aaaaaaaaaa\r\n')])
Test_input_chunk_transport:
POST /cgi-bin/1.cgi?bla=ddd HTTP/1.1
Host: localhost
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=abcdefghdddddd
A6
--abcdefghdddddd
Content-Disposition: form-data; name="filename"; filename="freemind"
Content-Type: application/octet-stream
aaaaaaaaaa
--abcdefghdddddd--
0FieldStorage(None, None, [MiniFieldStorage('bla', 'ddd'), FieldStorage(None, None, '')])apache服务器不会记录任何错误。
知道我在这里错过了什么吗?
发布于 2014-08-08 07:49:25
这里的答案可能对你有帮助:http://pythonpaste.org/archives/message/20090313.212230.263b0ffc.da.html
https://stackoverflow.com/questions/25179354
复制相似问题