如何在Django中获取二进制post数据!很好地?
如果这是一个新手问题,请原谅,我昨天开始学习Django,我正在努力避免养成坏习惯,也就是说,我从一开始就尝试“用Django的方式”做事 我有一个将二进制数据作为http post字段接收的视图。现在Django当然会自动将二进制数据转换为unicode字符串 我的问题是,如何获取原始二进制数据 我想到了几件事。让如何在Django中获取二进制post数据!很好地?,django,django-views,python,Django,Django Views,Python,如果这是一个新手问题,请原谅,我昨天开始学习Django,我正在努力避免养成坏习惯,也就是说,我从一开始就尝试“用Django的方式”做事 我有一个将二进制数据作为http post字段接收的视图。现在Django当然会自动将二进制数据转换为unicode字符串 我的问题是,如何获取原始二进制数据 我想到了几件事。让request成为我正在处理的请求 使用request.raw\u post\u data将涉及再次解析数据-当出现request.post时,实际上存储了原始数据,我实际上只是在
request
成为我正在处理的请求
- 使用
将涉及再次解析数据-当出现request.raw\u post\u data
时,实际上存储了原始数据,我实际上只是在尝试进行动态转换(此外,这在开发版本中是新的)request.post
- 使用base64或更高版本来传输数据是可行的,但当数据传输本身不是问题时,开销似乎太大了
- 在获取该字段之前执行
也不起作用,因为我仍然会得到一个unicode字符串,而且感觉有点像一个肮脏的黑客。在这里使用request.encoding=“foo”
(没有传输编码那么糟糕)给了我一个“base64”
AssertionError
澄清一下——我这里说的不是经典的文件上传,而是存储在POST字段中的二进制数据。我想这样做,因为我想与该视图交互的唯一方式是通过上传脚本。在这种情况下,使用普通的POST字段可以使客户机和服务器更加简单。有些人可能会说,以标准格式字段存储二进制数据在某种程度上是一种坏习惯:) 您可以使用Python的标准库方法将字符串转换回二进制表示形式 看看
编辑前过帐: 这段代码(从帖子接收数据)怎么样
适合我。用二进制“wb”写就行了,以防万一!我们不希望LinuxWindows新行不兼容会破坏我们的二进制文件。这不是我想要的——在我的例子中,文件实际上是作为POST字段的内容传输的,而不是作为文件上载,因为我无论如何都想将其存储在数据库中。由于我提到的视图界面是一个上传脚本,我认为在服务器上使用任何类型的tempfiles都是不必要的。它不是一个标准的表单字段-没有表单,只有一个
httplib.HTTPConnection
。但是,是的,有道理,我现在做的是一个肮脏的黑客反正。谢谢!
def handleFile(self, request):
file = request.FILES["file"]
destination = open('filename.ext', 'wb')
for chunk in file.chunks():
destination.write(chunk)
destination.close()