我试图让Django的HttpResponse返回二进制数据,但没有成功。我一直在尝试不同的方法,但没有成功。
只要二进制数据值不在ASCII字符范围(小于0-255)之外,就可以将字符串编码为ASCII。当使用latin-1编码时也会发生同样的情况。
创建字节字符串工作得很好,但如果包含某些值,例如,如果我在数据中包含以下字节,则似乎失败:“\xf6\x52”,我将得到不同的字节作为结果。由于某种原因,当我试图查看结果响应时,第一个字节\xf6被转换为0xfffd。
我很想得到一些反馈和帮助。
非常感谢!
-A-
3条答案
按热度按时间e3bfsja21#
对我很有效
nwlls2ji2#
从Django返回二进制数据的灵活方法是首先使用Base64编码数据。
Base64是一组类似的binary-to-text encoding方案,通过将其转换为基数64表示来表示ASCII字符串格式的二进制数据。
由于Base64编码的数据是ASCII,因此默认的HTTP响应内容类型
text/html; charset=utf-8
可以正常工作。图片示例
Django
Web浏览器
从Django获取
data
后,可以使用base64数据创建data URL。JSON响应
Base64数据也可以作为JSON响应的一部分返回:
mqxuamgl3#
下面是一个如何使用Django响应二进制数据(在我的例子中是Excel文件)的示例代码: