2011-06-09 34 views
3

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

我从哪里下载的主机不是原因。我试图从保管箱和本地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() 

我会很高兴,如果任何人有这方面的一些建议,这样我就可以找到我的错误。

+0

我也尝试设置'self.curl.setopt(pycurl.CRLF,1)'为1和0,这并没有帮助。 – Hurix 2011-06-09 12:01:34

回答

5

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

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

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

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

感谢stackoverflow让我冥想这件事。 :)