Загрузка изображений с PycURL заставляет меня сломаться - PullRequest
3 голосов
/ 09 июня 2011

Я борюсь с пикурлом. Это мои заголовки:

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 Ответ

5 голосов
/ 09 июня 2011

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

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

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

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

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

...