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' codec can't decode byte 0xff in position 15: invalid start byte

错误似乎到达了 f.write(x['upfile'].value),我终其一生都无法弄清楚原因。任何想法出了什么问题?我知道该值在该变量中,因为如果我只是返回它,图像就会显示在我的浏览器中。

4

1 回答 1

1

我看到代码有问题的第一件事是文件没有以二进制模式打开。在读写不是简单字符串的文件时,需要二进制模式来将数据视为字节。只需切换文件打开方式f = open(filename, 'wb')即可解决该问题。

于 2013-01-16T23:45:47.323 回答