我试图通过post请求将文件发送到localhost上的服务器。我在Firefox中使用HttpRequester(在Chrome上也尝试过Postman,在Android上使用Tasker)来汇总请求。
问题是request.FILES
总是空的。但是当我尝试打印request.body
时,它会显示一些非人类可读的数据,其中特别包括我要上传的文件中的数据(它是一个数据库)。因此,以某种方式文件到达服务器是有道理的。
来自Django docs:
请注意,如果请求方法是POST,则FILES将仅包含数据 并发布到请求的那个 ENCTYPE ="多部分/格式数据&#34 ;.否则,FILES将为空白 字典式对象。
当我尝试将内容类型的请求设置为&multi39 / multi-form-data'时,'多部分中的无效边界:无' 。当我添加&#39 ;; boundary = frontier'时,错误消失了。内容类型。
另一种方法是设置enctype =" multipart / form-data"。
因此我有几个问题:
由于
答案 0 :(得分:2)
- 我应该使用完全多部分/表单数据内容类型吗?
醇>
Django仅支持multipart/form-data
,因此您必须使用该内容类型。
普通HTML中的
- 我在哪里可以指定enctype? (标题,参数等)
醇>
只是将enctype="multipart/form-data"
作为表单元素的参数之一。在HttpRequester中,它更复杂,因为我认为默认情况下它不支持multipart/form-data
。 http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2是关于multipart/form-data
的更多细节,应该可以手动在HttpRequester中运行它。
- 为什么文件的数据包含在request.body中,但request.FILES是空的?
醇>
您已经回答过:
请注意,如果请求方法是POST,则FILES将仅包含数据,并且发布到请求的文件包含enctype =" multipart / form-data"。 否则,FILES将是一个空白的字典对象。