微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

BaseHTTPRequestHandler cgi.parse_multipart永不返回

如何解决BaseHTTPRequestHandler cgi.parse_multipart永不返回

我的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行,直到它停止为止。直到我重新启动调试过程,后续请求才被处理。

为完整起见,这是我用来发布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);
    }

仅使用POSTJSON字符串的其他表单也可以正常工作,但这需要包含多个部分,因为我还上传了表单中的文件。我无法弄清楚我的代码有什么问题,它看起来与其他人对Python 3的multipart处理代码相同。

一个有趣的线索是,如果我在调试控制台中尝试以下操作:

form = cgi.FieldStorage(
    fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD':'POST'})

...此调试命令也永远卡住。

解决方法

我以前以为没有打叉就读过rfile。仍然是怪异的行为,我会期望出现错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。