【问题标题】:Submitting files to django server from outside via Ajax通过 Ajax 从外部向 django 服务器提交文件
【发布时间】:2014-08-25 18:26:41
【问题描述】:

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

A 中的 javascript 代码如下所示。我使用 blob 创建一个没有 real 上传的文件并通过 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 服务器上,我得到的是这样的(当我 print request.POST 时),因此当我使用 Django FileUpload 时,它返回了一个异常。

<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 来处理吗?

谢谢,

【问题讨论】:

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

标签: ajax django django-forms django-file-upload


【解决方案1】:

你必须告诉 $.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));
   }
});

【讨论】:

    猜你喜欢
    • 2017-01-21
    • 2018-08-05
    • 1970-01-01
    • 2018-05-23
    • 2016-08-20
    • 2021-10-13
    • 1970-01-01
    • 2022-10-24
    • 2018-09-29
    相关资源
    最近更新 更多