Python请求上传文件 - 413请求实体太大

时间:2015-05-05 08:14:02

标签: python

我有以下脚本允许我将文件上传到bestream.tv。 这不适用于95MB以上的文件。可能会有什么变化?

import requests
import re

sessionObj = requests.session()
sessionObj.post('http://bestream.tv/login.html', data={'loginUsername':'my_user', 'loginPassword':'my_pass', 'submitme':'1'})
filehandle = open('Diabolik Lovers - 12.mp4', 'rb')

resp = sessionObj.get('http://bestream.tv/account_home.html')

url_form = re.search('url: \'(http:\/\/.*)?\'', resp.text).group(1)
sessionid = re.search('_sessionid:\s\'(.*)?\', cTracker:', resp.text).group(1)
ctracker = re.search('cTracker:\s\'(.*)?\', maxChun', resp.text).group(1)

r = sessionObj.post(url_form, data={'_sessionid':sessionid, 'folderId':'', \
                    'cTracker':ctracker, 'maxChunkSize':'100000000'}, files={'files[]':(filehandle.name, filehandle)})

print(r.text)

结果打印出来:

413 Request Entity Too Largue

要从网上传文件,我会在chrome中获得这些结果 - >网络:

Accept:application/json, text/javascript, */*; q=0.01
Content-Disposition:attachment; filename="Diabolik%20Lovers%20-%206.5.mp4"
Content-Range:bytes 0-99999999/168152948
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryHNdI5JvVzIVROkWQ
Origin:http://bestream.tv
Referer:http://bestream.tv/account_home.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36


Accept:application/json, text/javascript, */*; q=0.01
Content-Disposition:attachment; filename="Diabolik%20Lovers%20-%206.5.mp4"
Content-Range:bytes 100000000-168152947/168152948
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryfsXuVqiBMXo1Vtn7
Origin:http://bestream.tv
Referer:http://bestream.tv/account_home.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36

依此类推,直到您完成上传文件。

所以我暗示它每100000000字节就会上升。我应该修改我的脚本以执行相同的操作?

1 个答案:

答案 0 :(得分:1)

您获得的错误是网络服务器告诉您的方式,实际上您无法上传更大的文件。服务器接受的请求有多大取决于服务器管理员,而不是以任何方式控制客户端(您的代码)。

我认为,因为requests的文档没有明确说明:使用maxChunkSize发帖会允许" chunked" HTTP传输(另请参阅:http://en.wikipedia.org/wiki/Chunked_transfer_encoding)使仍然文件大小完整,因为分块在另一个抽象层上。

我担心你必须自己切片并将每个文件发布。

相关问题