使用PycURL下载图像让我破碎的图像

时间:2011-06-09 12:00:38

标签: python image curl download pycurl

我正在与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的行尾有区别,但是我改变了,现在我有相同的图像,仍然坏了)

我正在下载的主机不是原因。我试图从Dropbox和本地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()

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

1 个答案:

答案 0 :(得分:5)

好的,现在我通过发布这个问题终于对此进行了冥想,我得到了解决方案。

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

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

我希望这个问题无论如何都可以帮助别人。

感谢stackoverflow让我默想这一点。 :)