Tornado 发送和接收字节

Tornado send and receive bytes

我正在用一个打开的 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

如何使用 tornado 发送和接收一系列字节?

res = requests.get(url).text

您正在尝试将收到的 JPEG 文件作为文本文件读取。

您需要使用 content 属性以字节为单位获取数据:

res = requests.get(url).content