2013-01-23 25 views
2

我正在使用Python 2.7將一些數據發佈到服務器上:雖然這適用於Linux和OS X,但在Windows中它仍持續上傳超過4分鐘 然後放棄「錯誤500」。 但只有當文件> 1Mb。 在服務器端,由於文件傳輸損壞而生成錯誤。 我也嘗試過Python 2.5,在虛擬機和兩個不同的本地Windows環境中運行它。 Windows版本是Win7 x64。Python POST錯誤500,僅適用於Windows 7和大於1Mb的文件

  1. 工程與文件< 1Mb的
  2. 工程與任何文件的大小下,OS X和Linux(Ubuntu的)
  3. 如果我上傳通過網絡接口或Linux或OS相同的文件/ X 它完美的工作,所以問題似乎不是文件本身。

CODE:

data = { 
    'title': title, 
    'file': open(filename), 
    'filename': filename 
} 

datamulti, headers = multipart_encode(data) 
request = urllib2.Request(url, datamulti, headers) 
print(result.read()) 
+0

你在使用框架嗎? Django爲內部錯誤500發生的原因提供了很好的解釋。 – rikAtee

+0

在服務器端,他們使用的是Django。他們說我發生錯誤是因爲發送的文件無效(我正在發送zip或obj文件)。 – pietro909

+0

Django提供的錯誤消息是什麼? – rikAtee

回答

2

試試這個:

data = { 
    'title': title, 
    'file': open(filename, 'rb'), 
    'filename': filename 
} 

這將使因此文件以二進制模式而不是文本模式打開。

+0

的確如此。萬分感謝。 – pietro909

1

這裏有一個工作版本,在Win32測試:

data = { 
    'title': title, 
    'file': open(filename, 'rb'), 
    'filename': filename 
    } 

    datamulti, headers = multipart_encode(data) 
    request = urllib2.Request(url, datamulti, headers, None, True) 
    print urllib2.urlopen(request).read() 
相關問題