tornado.httpclient AsyncHTTPClient() python3
tornado.httpclient AsyncHTTPClient() python3
我有一个奇怪的问题,我希望有人遇到过它。
我正在使用 TelegramAPI,我想使用 POST 文件
multipart/form-data。文件大小 32K
data = {'photo': open('test.jpg', 'rb').read()}
使用简单的 requests python lib 我没问题:
res = requests.post(url, files=data)
但是
当我尝试使用
http_client = httpclient.AsyncHTTPClient()
http_client.fetch(url, method='POST', body=urllib.parse.urlencode(data))
同图
我收到一个错误
tornado.httpclient.HTTPError: HTTP 413: Request Entity Too Large
不知道为什么? requests 工作正常,但 AsyncHTTPClient 不行,请帮助我
请查看此 demo 代码。您将看到有关如何上传文件的示例。
Tornado 的 HTTP 客户端中的 body
参数类似于 requests
中的 data
参数。 files
参数完全不同:它使用 multipart
编码对文件进行编码。您要使用哪一个取决于服务器期望的格式。
在这种情况下,服务器需要 multipart
编码,而不是 URL 编码。 Tornado 没有对生成 multipart
编码的内置支持,但正如 Vitalie 在另一个答案中所说,this example code 展示了如何做到这一点。
我有一个奇怪的问题,我希望有人遇到过它。 我正在使用 TelegramAPI,我想使用 POST 文件 multipart/form-data。文件大小 32K
data = {'photo': open('test.jpg', 'rb').read()}
使用简单的 requests python lib 我没问题:
res = requests.post(url, files=data)
但是
当我尝试使用
http_client = httpclient.AsyncHTTPClient()
http_client.fetch(url, method='POST', body=urllib.parse.urlencode(data))
同图
我收到一个错误
tornado.httpclient.HTTPError: HTTP 413: Request Entity Too Large
不知道为什么? requests 工作正常,但 AsyncHTTPClient 不行,请帮助我
请查看此 demo 代码。您将看到有关如何上传文件的示例。
Tornado 的 HTTP 客户端中的 body
参数类似于 requests
中的 data
参数。 files
参数完全不同:它使用 multipart
编码对文件进行编码。您要使用哪一个取决于服务器期望的格式。
在这种情况下,服务器需要 multipart
编码,而不是 URL 编码。 Tornado 没有对生成 multipart
编码的内置支持,但正如 Vitalie 在另一个答案中所说,this example code 展示了如何做到这一点。