Торнадо отправлять и получать байты - PullRequest
0 голосов
/ 10 мая 2018

Я пишу ответ торнадо строки байтов из открытого файла JPG, который выглядит примерно так:

b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\...

Когда я получаю байты с res = requests.get(url).text, я получаю что-то вродеэто:

����JFIF��C��C����  
���
��א�I+���`��;��oI�JU����J+��Uq̧[�}�ĥ�%��6A�}~�����mKD�#�
                                                       w,ޓW�t@~�?��TF�F������?G�����N"���b��

Когда я пытаюсь избежать этого:

piece = tornado.escape.utf8(res)
OR
piece = res.encode()

Я получаю строку байтов, но она не совпадает с той, что была отправлена:

b'\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xef\xbf\xbd\xef\xbf\xbd\x00C\x00\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\...

Вот как я открываю оригинальный jpg:

with open('file.jpg', 'rb') as f:
    content = f.read()
    # Split content into multiple parts and send each part

Как я могу отправлять и получать серию байтов с торнадо?

1 Ответ

0 голосов
/ 11 мая 2018
res = requests.get(url).text

Вы пытаетесь прочитать полученный файл JPEG как текстовый файл.

Вам нужно использовать атрибут content, чтобы получить данные в байтах:

res = requests.get(url).content
...