Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
通过Ajax从外部向django服务器提交文件_Ajax_Django_Django Forms_Django File Upload - Fatal编程技术网

通过Ajax从外部向django服务器提交文件

通过Ajax从外部向django服务器提交文件,ajax,django,django-forms,django-file-upload,Ajax,Django,Django Forms,Django File Upload,从客户端A,我想通过javascript动态创建一个文件,并通过Ajax将其发送到Django服务器B,以便进一步处理 A中的javascript代码如下所示。我使用blob创建一个没有真正上传的文件,并通过Ajax发送 console.log("start sending binary data..."); var form = new FormData(); var blob = new Blob([bytesArray], {type: 'example/binary'}); fo

从客户端A,我想通过javascript动态创建一个文件,并通过Ajax将其发送到Django服务器B,以便进一步处理

A中的javascript代码如下所示。我使用blob创建一个没有真正上传的文件,并通过Ajax发送

console.log("start sending binary data...");
var form = new FormData();
var blob = new Blob([bytesArray], {type: 'example/binary'});    
form.append('file_name', blob, 'test.bin');    

$.ajax({
   url: THIRD_SERVER + 'test_binary',
   type: 'POST',       
   data: form,
   processData: false,
   success: function(data){
      console.log('test_binary ' + JSON.stringify(data));
   }
});
然而,在Django服务器上,我得到的结果是这样的(当我打印request.POST时),因此当我使用Django时,它返回了一个异常

<QueryDict: {u' name': [u'"file_name"'], u'------WebKitFormBoundarybCp3z7mAduz8BBDq\r\nContent-Disposition: form-data': [u''], u' filename': [u'"test.bin"\r\nContent-Type: example/binary\r\n\r\n\ufffd\ufffd\ufffd\x01\x05\x06\r\n------WebKitFormBoundarybCp3z7mAduz8BBDq--\r\n']}>

因此,我猜上面的javascript并不能将文件发送到Django服务器。有没有什么合适的方法可以使用FileUpload来处理


谢谢,

您必须告诉$.ajax不要设置内容类型,否则将设置不正确

$.ajax({
   url: THIRD_SERVER + 'test_binary',
   type: 'POST',       
   data: form,
   processData: false,
   contentType: false,
   success: function(data){
      console.log('test_binary ' + JSON.stringify(data));
   }
});

request.FILES
的输出是什么?@anuragal我得到了空的dict