2015-05-05 3 views
1

У меня есть следующий сценарий, который позволяет загружать файлы в bestream.tv. Это не работает для файлов выше 95 МБ. Какие изменения могут произойти?Файл загрузки запроса на Python - 413 слишком большой объект запроса

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 

Чтобы загрузить файл из Интернета, я получаю эти результаты в хроме -> Сеть:

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

Ошибка, которую вы получаете, - это способ веб-сервера, говорящий вам, что вы не можете загружать файлы большего размера. Насколько большой запрос, который принимает сервер, зависит от администратора сервера и никак не контролирует клиента (ваш код).

Я предполагаю, потому что документы о requests явно не сказать: проводка с maxChunkSize позволил бы «фрагментированному» передача HTTP (смотрите также: http://en.wikipedia.org/wiki/Chunked_transfer_encoding), который оставляет еще размера файла нетронутой, потому что CHUNKING находится на другом уровне абстракции.

Боюсь, вам придется нарезать файл самостоятельно и ПОЧТОВИТЬ каждую часть.

+0

Итак, я смотрел на код поведения сети и сети при загрузке, файл загружается в куски того, что определено «maxChunkSize» 100000000. Как я могу сделать, чтобы отправить файл на части? – Marco

+0

Я обновил свой ответ. Вероятно, вы ошибочно принимаете 'maxChunkSize' за то, что это не так. – knitti

+0

Я обновил свой вопрос. Я прочитал ссылку, которую вы мне прислали, но я больше потерял, чем раньше, я не знаю, как направить мою проблему. – Marco

Смежные вопросы