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