新手提问。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
谢谢!
Ben
答案在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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句