我尝试通过ActiveMQ python + stomp.py发送/接收图片。它从内存中的图像开始,从前端上传。一个脚本将其发送到AMQ,另一个脚本从那里接收,写入文件并将链接返回到前端。
但是出了问题 - 因为文件没有显示图片。具有接收图像的文件几乎与原始图像的大小相匹配,仅大3-4K字节。但它没有任何表现。
我无法了解会发生什么...... AMQ是否会在带有图像数据的消息中添加内容,或者是什么?有什么想法吗?
LISTENER CLASS CODE:
class MyListener(object):
msglist = []
def __init__(self):
self.msglist = []
def on_error(self, headers, message):
self.msglist.append('<[ERROR]> ' + message)
def on_message(self, headers, message):
self.msglist.append(message)
发送IMG信息代码:
if request.FILES.get('image2send'):
img = request.FILES['image2send']
conn = stomp.Connection()
conn.set_listener('', MyListener())
conn.start()
conn.connect()
conn.send(body=' '.join(img), destination='/queue/test_img', headers={'persistent': 'true'})
time.sleep(2)
conn.disconnect()
收到IMG消息代码:
lst = MyListener()
conn = stomp.Connection()
conn.set_listener('', lst)
conn.start()
conn.connect()
conn.subscribe(destination='/queue/test_img', id=1, ack='auto')
time.sleep(2)
conn.disconnect()
if len(lst.msglist) > 0:
dest = open(MEDIA_ROOT + 'amq_getpic/thepic.png', 'wb+')
dest.write(lst.msglist[0])
dest.close()
答案 0 :(得分:1)
问题出在发送IMG消息代码。
原始字符串:
conn.send(body=' '.join(img),
destination='/queue/test_img',
headers={'persistent': 'true'})
固定:
conn.send(body=''.join(img),
destination='/queue/test_img',
headers={'persistent': 'true'})
发送的正文字符串中的空格正在破坏文件