Загрузка изображения с 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, но я изменил это, и теперь у меня есть идентичные изображения, все еще сломанные)

Хост, с которого я качаю, не является причиной. Я пытался сделать то же самое из дропбокса и локального апача. Оба не работали.

Вот как я сохраняю изображение:

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()

Я был бы рад, если у кого-нибудь есть предложения по этому поводу, чтобы я мог найти свою ошибку.


person Hurix    schedule 09.06.2011    source источник
comment
Я также пытался установить self.curl.setopt(pycurl.CRLF, 1) в 1 и 0, это не помогло.   -  person Hurix    schedule 09.06.2011


Ответы (1)


Хорошо, теперь, когда я, наконец, поразмышлял над этим, опубликовав этот вопрос, я получил решение.

Мне нужно было открыть файл в двоичном режиме.

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

Я надеюсь, что этот вопрос поможет кому-то еще, когда-нибудь, так или иначе.

Спасибо stackoverflow за то, что заставил меня задуматься об этом. :)

person Hurix    schedule 09.06.2011