0

私はこのコードを書きました:

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'].value) に到達したように見えますが、私の人生では理由を理解できません。何がうまくいかないのですか?値を返すだけでブラウザに画像が表示されるため、値がその変数にあることはわかっています。

4

1 に答える 1

1

コードで最初に間違っているのは、ファイルがバイナリモードで開かれていないことです。単純な文字列ではないファイルを書き込むときに読み取る場合、データをバイトにすぎないものとして扱うには、バイナリモードが必要です。f = open(filename, 'wb')その問題を解決するに は、ファイルを開くように切り替えるだけです。

于 2013-01-16T23:45:47.323 に答える