gpt4 book ai didi

django - 如何在 Django 中获取二进制发布数据!很好?

转载 作者:太空宇宙 更新时间:2023-11-03 15:27:38 31 4
gpt4 key购买 nike

如果这是一个新手问题,请原谅我,我昨天开始学习 Django,并且我尽量不要养成坏习惯,即我试图从一开始就以“django 方式”做事。

我有一个 View 接收二进制数据作为 http post 字段。现在 Django 当然会自动将我的二进制数据转换为 unicode 字符串。

我的问题是,如何获取原始二进制数据?

我想到了几件事。让 request 成为我正在处理的请求。

  • 使用 request.raw_post_data 将涉及再次 解析数据 - 当表面上 request.POST 实际上存储原始数据时,我实际上只是在尝试绕过即时转换(此外,这是开发版本中的新功能)。
  • 使用 base64 左右来传输数据是可行的,但当数据传输本身不是问题时,开销似乎太大了。
  • 在获取该字段之前执行 request.encoding="foo"(并在之后重新分配)也不起作用,因为我仍然得到一个 unicode 字符串,除了感觉有点肮脏。在这里使用 "base64"(不像传输编码那么糟糕)给了我一个断言错误

提前感谢您的想法!

编辑:澄清一下——我不是在谈论经典文件上传,而是作为存储在 POST 字段中的二进制数据。我想那样做,因为我想与该 View 交互的唯一方法是通过上传脚本。在这种情况下,使用普通的 POST 字段会使客户端和服务器都变得更加简单。

最佳答案

有些人可能会说在标准表单字段中存储二进制数据在某种程度上是一个坏习惯:)

您可以使用 Python 的标准库方法将您的字符串转换回二进制表示形式。

看看binascii — Convert between binary and ASCI


编辑前发布:

这段代码呢(从POST接收数据)

def handleFile(self, request):
file = request.FILES["file"]
destination = open('filename.ext', 'wb')
for chunk in file.chunks():
destination.write(chunk)
destination.close()

对我有用。

关于django - 如何在 Django 中获取二进制发布数据!很好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4499129/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com