3

我正在为 pycurl 苦苦挣扎。这些是我的标题:

headers.append('User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0')
headers.append('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
headers.append('Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3')
headers.append('Accept-Encoding: gzip, deflate')
headers.append('Accept-Charset: UTF-8,*')
headers.append('Connection: Keep-Alive')

原来的:http://dl.dropbox.com/u/25733986/test.jpg

我得到什么:http://dl.dropbox.com/u/25733986/test_kaputt.jpg

如您所见,我用 pycurl 得到的那个坏了。如果我将它们与文本比较工具进行比较,它会告诉我它们是相同的。(行尾有区别,原来的只有 LF,而坏的有 CRLF,但我改变了,现在我有相同的图像,仍然坏)

我从中下载的主机不是原因。我尝试从保管箱和本地 apache 中执行相同的操作。两者都没有工作。

这是我保存图像的方式:

self.buffer = StringIO.StringIO()
# other curl options like ssl, cookies, followlocation and GET Request URL Setup to the Image: http://dl.dropbox.com/u/25733986/test.jpg
self.curl.setopt(pycurl.WRITEFUNCTION, self.buffer.write)
# -> curl.perform()
f = open("temp/resources/%s" % (filename,), 'w')
f.write(self.buffer.getvalue())
f.close()

如果有人对此有一些建议,我会很高兴,所以我可以找到我的错误。

4

1 回答 1

5

好的,现在我终于通过发布这个问题来思考这个问题,我得到了解决方案。

我需要以二进制模式打开文件。

f = open("temp/resources/%s" % (filename,), 'wb')

我希望这个问题可以帮助其他人,有时,无论如何。

感谢 stackoverflow 让我思考这个问题。:)

于 2011-06-09T12:04:25.653 回答