首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django的Multipart httpresponse

django的Multipart httpresponse
EN

Stack Overflow用户
提问于 2016-01-22 15:57:12
回答 1查看 771关注 0票数 0

我想要一些关于我的代码的帮助。我的目标是在httpResponse中同时将字符串变量作为ini纯文本和bmp文件发送。

现在我将bmp文件的解码字节插入到ini参数中,考虑到我与一个对讲机通信,该对讲机只是客户端而不是服务器,因此我只能发出httpresponse而不能发出请求。

如果我对我的图像进行base64编码,我需要更改对讲机的软件来解码它,目前我不能,你能告诉我在我的情况下base64编码字节是强制的吗?

我在网上做了一些研究,我看到人们对他们的图像进行base64编码或进行多部分响应。

你能帮助我实现一个多部分的响应,即使是手工制作的,这会让我感兴趣?

我现在向您展示我是如何做的,我将图像放在"string“ini参数中:

代码语言:javascript
复制
    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    

这是我得到的回应:

https://gist.github.com/Ezekiah/e6fd50f13c05f338f27a

EN

回答 1

Stack Overflow用户

发布于 2016-01-22 17:55:35

如果您需要将图像文件内容与响应的其余部分混合,我认为您必须使用Base64编码。如果可以在一个请求中返回ini参数,而在另一个请求中返回文件,则Django提供了一个FileResponse类(StreamingHttpResponse的子类),您可以使用它以块的形式返回bmp文件,如下所示:

代码语言:javascript
复制
from django.http import FileResponse
def send_bmp(request):
    file = open(django_settings.TMP_DIR+'/qrcode.bmp', 'rb')
    return FileResponse(file)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34941693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档