2015-05-05 511 views
1

我有以下腳本,允許我將文件上傳到bestream.tv。 這對於95MB以上的文件不起作用。可以做出什麼改變?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

您正在收到的錯誤是Web服務器告訴您的方式,事實上您無法上傳更大的文件。服務器接受多大的請求取決於服務器管理員,而不是以任何方式控制客戶端(您的代碼)。

我假設,因爲requests的文檔不明確告訴:發佈與maxChunkSize將允許「分塊」 HTTP傳輸(參見:http://en.wikipedia.org/wiki/Chunked_transfer_encoding)留下仍然文件大小不變,因爲分塊在另一個抽象層上。

恐怕你不得不自己分割文件,並張貼每一塊。

+0

因此,我正在查看上傳時網絡和網絡行爲的代碼,將文件上傳到定義爲'maxChunkSize''100000000'的片段中。我怎麼能把文件分成幾塊? – Marco

+0

我更新了我的答案。你可能會誤認爲'maxChunkSize'的東西不是。 – knitti

+0

我更新了我的問題。我讀了你送給我的鏈接,但我比以前更加迷失,我不知道如何指導我的問題。 – Marco