1

新手问题重新。BaseHTTPRequestHandler 和接收数据...

我一直在使用 BaseHTTPRequestHandler 接收作为数据传递给我的 URI 的 JSON 字符串。我现在需要接收 JSON 字符串和 ascii 文件。如何判断我已收到 JSON 数据和单独的平面文件?如何访问文件中的数据?

如果我收到多个文件怎么办?

顺便说一句,我刚刚通过从 Postman 调用我的 URI 进行了测试并查看以下标题:

headers: Host: localhost:6081

Content-Type: application/x-www-form-urlencoded

User-Agent: python-requests/2.2.1 CPython/3.4.0 Linux/3.13.0-35-generic

Accept: */*

Accept-Encoding: gzip, deflate, compress

Content-Length: 403

谢谢!

4

1 回答 1

1

答案在 CGI 库中。请参阅以下 StackOverflow 帖子:Simple Python WebServer。那篇文章中的第二个答案对我们最有用。

以下是一些测试代码,您可能会发现它们对打印幕后发生的事情很有用,尤其是当您尝试在一篇文章中接收多个文件时:

        print("command: " + self.command + "\npath: " + self.path + "\nrequest_version: " \
            + self.request_version + "\nheaders: " + str(self.headers))
        form = cgi.FieldStorage(
            fp=self.rfile,
            headers=self.headers,
            environ={'REQUEST_METHOD': 'POST',
                     'CONTENT_TYPE': self.headers['Content-Type'],
                     })
        print("\nform:", str(form))
        print("\nform['file'].filename:", form['file'].filename)
        filename = form['file'].filename
        data = form['file'].file.read()
        open("/tmp/%s" % filename, "wb").write(data)
        print('\ndata:', data)
于 2014-11-02T16:21:29.387 回答