BaseHTTPRequestHandler cgi.parse_multipart 从不 returns
BaseHTTPRequestHandler cgi.parse_multipart never returns
我的 do_POST
中有以下片段:
c_type, p_dict = cgi.parse_header(
self.headers.get('Content-Type')
)
content_len = int(self.headers.get('Content-length'))
p_dict['boundary'] = bytes(p_dict['boundary'], "utf-8")
p_dict['CONTENT-LENGTH'] = content_len
postvars = cgi.parse_multipart(self.rfile, p_dict)
它一直持续到最后 postvars
行,它就在那里停止。在我重新启动调试过程之前,甚至不会处理后续请求。
为了完整起见,这是我用来 post FormData
:
的 JS
function send() {
var xhr = new XMLHttpRequest();
var url = "URL_WAS_HERE";
xhr.open("POST", url, true);
xhr.onreadystatechange = function () {
};
var form = new FormData(document.querySelector('form'));
xhr.send(form);
}
其他简单地 POST
一个 JSON
字符串的表格工作正常,但这需要是多部分的,因为我也在表格中上传了一个文件。我无法弄清楚我的代码有什么问题,它看起来或多或少与其他人的 multipart
处理代码相同 Python 3.
另一个有趣的线索是,如果我在调试控制台中尝试以下操作:
form = cgi.FieldStorage(
fp=self.rfile,
headers=self.headers,
environ={'REQUEST_METHOD':'POST'})
...此调试命令也永远卡住。
之前看过rfile
的一个fork我还以为没中呢。仍然很奇怪的行为,我会期待一个错误。
我的 do_POST
中有以下片段:
c_type, p_dict = cgi.parse_header(
self.headers.get('Content-Type')
)
content_len = int(self.headers.get('Content-length'))
p_dict['boundary'] = bytes(p_dict['boundary'], "utf-8")
p_dict['CONTENT-LENGTH'] = content_len
postvars = cgi.parse_multipart(self.rfile, p_dict)
它一直持续到最后 postvars
行,它就在那里停止。在我重新启动调试过程之前,甚至不会处理后续请求。
为了完整起见,这是我用来 post FormData
:
function send() {
var xhr = new XMLHttpRequest();
var url = "URL_WAS_HERE";
xhr.open("POST", url, true);
xhr.onreadystatechange = function () {
};
var form = new FormData(document.querySelector('form'));
xhr.send(form);
}
其他简单地 POST
一个 JSON
字符串的表格工作正常,但这需要是多部分的,因为我也在表格中上传了一个文件。我无法弄清楚我的代码有什么问题,它看起来或多或少与其他人的 multipart
处理代码相同 Python 3.
另一个有趣的线索是,如果我在调试控制台中尝试以下操作:
form = cgi.FieldStorage(
fp=self.rfile,
headers=self.headers,
environ={'REQUEST_METHOD':'POST'})
...此调试命令也永远卡住。
之前看过rfile
的一个fork我还以为没中呢。仍然很奇怪的行为,我会期待一个错误。