我想要一些关于我的代码的帮助。我的目标是在httpResponse中同时将字符串变量作为ini纯文本和bmp文件发送。
现在我将bmp文件的解码字节插入到ini参数中,考虑到我与一个对讲机通信,该对讲机只是客户端而不是服务器,因此我只能发出httpresponse而不能发出请求。
如果我对我的图像进行base64编码,我需要更改对讲机的软件来解码它,目前我不能,你能告诉我在我的情况下base64编码字节是强制的吗?
我在网上做了一些研究,我看到人们对他们的图像进行base64编码或进行多部分响应。
你能帮助我实现一个多部分的响应,即使是手工制作的,这会让我感兴趣?
我现在向您展示我是如何做的,我将图像放在"string“ini参数中:
def send_bmp():
outputConfig = io.StringIO()
outputConfig.write('[RETURN_INFO]\r\n')
outputConfig.write('config_id=255\r\n')
outputConfig.write('config_type=2\r\n')
outputConfig.write('action=3\r\n')
outputConfig.write('[DATABASE]\r\n')
file = open(django_settings.TMP_DIR+'/qrcode.bmp', 'rb').read()
outputConfig.write('size_all='+str(len(file))+'\r\n')
outputConfig.write('string='+file.decode('iso-8859-1')+'\r\n')
outputConfig.write('csum='+str(sum(file))+'\r\n')
body = outputConfig.getvalue()
httpR = HttpResponse(body, content_type='text/plain;charset=iso-8859-1')
httpR['Content-Length'] = len(body)
return httpR 这是我得到的回应:
发布于 2016-01-22 17:55:35
如果您需要将图像文件内容与响应的其余部分混合,我认为您必须使用Base64编码。如果可以在一个请求中返回ini参数,而在另一个请求中返回文件,则Django提供了一个FileResponse类(StreamingHttpResponse的子类),您可以使用它以块的形式返回bmp文件,如下所示:
from django.http import FileResponse
def send_bmp(request):
file = open(django_settings.TMP_DIR+'/qrcode.bmp', 'rb')
return FileResponse(file)https://stackoverflow.com/questions/34941693
复制相似问题