如果文件足够小,服务器会成功接收文件。否则,它返回错误“Request Entity Too Large Error 413
”。这不是我的服务器,所以我无法直接处理它。
我很确定它取决于Content-Length
http标头(事实上,如果重要的话,这是 https 连接)。
conn = httplib.HTTPSConnection("www.site.com")
conn.connect()
conn.putrequest("POST", path)
conn.putheader("Content-Type", "some type")
conn.putheader("Content-Length", str(os.path.getsize(file_name)))
conn.endheaders()
即使我尝试按大块文件发送文件块(太大)
chunk_size = 1024
while True:
try:
chunk = f.read(chunk_size)
if not chunk:
break
conn.send(chunk)
except Exception as e:
break
它失败了,而在小文件上运行良好。
如果我手动使Content-Type变小,似乎(!)工作,至少来自服务器的“Request Entity Too Large Error 413
”错误消失了。但它完全不起作用,因为可能是文件的格式(即音频文件)以这种方式被破坏而服务器根本无法通过这样说(“文件的格式错误”)来处理该文件: / p>
fake_total_size = 1024*10 # it's smaller than a real file size for sure
conn.putheader("Content-Length", str(fake_total_size))
f = open(file_name)
chunk_size = fake_total_size
chunk = f.read(chunk_size)
conn.send(chunk)
我做错了什么以及如何解决?
我想它必须处理读取和发送大文件的一些可接受大小的部分和正确的内容长度值?还是流媒体上传,也许?