2014-11-01 60 views
0

我需要連接到api才能上傳單個文件(不使用chunk)。所有的數據都必須以POST-HTTP-data的形式發送....作爲迴應,我得到了一個上傳文件的鏈接。 api說fn的價值是田野嗎?文件名?我覺得有什麼不妥HANDELING的文件,其原因讓我的錯誤:urllib2.HTTPError: HTTP Error 415: Unsupported Media Type使用python上傳文件http

import urllib2 
import urllib 

query_args = {'username':'admin','password':'123456','upload_session':'ABCDEFGH','chunk_no':'1','chunk_number':'1','finalize':'1','filesize':'104857600','fn':open('test.rar', 'rb')} 
url = "http://bla.com/upload.php" 
data = urllib.urlencode(query_args) 
request = urllib2.request(url, data) 
response = urllib2.urlopen(request).read() 
+0

如果它的python爲什麼你需要php標籤? :D – Azarus 2014-11-01 21:30:04

+0

api是php,但我的腳本應該在python – armin884 2014-11-01 21:33:47

回答

0

query_args['fn']包含一個文件指針,而不是文件的內容,你需要實際讀取文件。您可能想要使用open('test.rar', 'rb').read()

您還將固定文件大小設置爲104857600;你可能想要得到這個os.stat,即。 os.stat(filename).st_size

HTTP錯誤代碼415的意思是:

The request entity has a media type which the server or resource does not support. For example, the client uploads an image as image/svg+xml, but the server requires that images use a different format.

你肯定.rar文件的支持?您可以嘗試添加MIME類型:Content-Type: application/x-rar-compressed

我無法確定這是否解決了您的問題,因爲您沒有提供足夠的詳細信息來重現它。

+0

只是爲了測試我修復了query_args ...仍然錯誤我得到urllib2.HTTPError:HTTP錯誤415:不支持的媒體類型,改變fn後打開(' test.rar','rb')。read() – armin884 2014-11-01 21:49:22

+0

@ armin884嘗試添加MIMEtype並確保支持rar文件。 – Carpetsmoker 2014-11-01 21:55:25