Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Django中获取二进制post数据!很好地?_Django_Django Views_Python - Fatal编程技术网

如何在Django中获取二进制post数据!很好地?

如何在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时,实际上存储了原始数据,我实际上只是在

如果这是一个新手问题,请原谅,我昨天开始学习Django,我正在努力避免养成坏习惯,也就是说,我从一开始就尝试“用Django的方式”做事

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

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

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

  • 使用
    request.raw\u post\u data
    将涉及再次解析数据-当出现
    request.post
    时,实际上存储了原始数据,我实际上只是在尝试进行动态转换(此外,这在开发版本中是新的)
  • 使用base64或更高版本来传输数据是可行的,但当数据传输本身不是问题时,开销似乎太大了
  • 在获取该字段之前执行
    request.encoding=“foo”
    也不起作用,因为我仍然会得到一个unicode字符串,而且感觉有点像一个肮脏的黑客。在这里使用
    “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()