2013-01-16 103 views
0

在Python文件我寫了這個代碼:寫圖像從網站

class uploadfromfile: 
    def POST(self, name=None): 
      filename = ''.join(random.choice('abcdefghijklmnopqrstuvwxyz') for i in range(20)) 
      x = web.input(upfile={}) 
      f = open(filename, 'w') 
      f.write(x['upfile'].value) 
      f.close() 
      imgFromFile(filename) 
      return "some html" 

但它不工作。我得到一個巨大的錯誤,以此結束:UnicodeDecodeError:'utf8'編解碼器無法解碼位置15中的字節0xff:無效起始字節

錯誤似乎到達f.write(x ['upfile'])。價值),我不能爲了我的生活找出原因。任何想法出了什麼問題?我知道該值是在該變量中,因爲如果我只是返回它,圖像將顯示在我的瀏覽器中。

+2

如果它是一個圖像,你可能應該打開文件'wb'作爲第一步的二進制。 – TheSentinel

+0

@TheSentinel:由於這很可能是OP的實際問題,因此您應該將其作爲答案(並解釋原因)。 – abarnert

+0

@ user1624005:這裏的另一種可能性是你沒有正確地上傳表單,所以你得到一個'值',認爲它是Unicode文本而不是二進制數據。如果您發佈了'form'屬性(我們不需要子節點,只是屬性),並告訴我們:Python 2或3,這將有助於診斷您的問題?哪個'web.py'版本? Windows還是Unix? – abarnert

回答

1

我可以看到代碼錯誤的第一件事是該文件不是以二進制模式打開。在寫入不是簡單字符串的文件時讀取數據時,只需要二進制模式即可將數據視爲字節。只需將文件打開爲f = open(filename, 'wb')即可解決該問題。

+0

這樣做了!非常感謝。 – user1624005