繁体   English   中英

django发布请求未在终端中显示javascript blob对象

[英]django post request is not showing javascript blob object in terminal

我已经在墙上敲了好几个小时。 我正在尝试使用来自本示例https://webaudiodemos.appspot.com/AudioRecorder/的源代码的recorder.js

现在,我想对其进行修改,以使用户可以听到播放给他们的音频,然后y如果愿意,可以将其上载到服务器。 通过将方法createObjectURL(blob)的返回值添加到音频元素,可以播放音频。

现在,我只需要编写一个发布请求,并将其发送到我的django实例即可在视图中处理它……这很奇怪。

我用jQuery发布这样的ajax请求...

$(document).ready(function () {
  $("#submit_audio_file").click(function () {
    var data = new FormData();
    data.append("csrfmiddlewaretoken", $("[name=csrfmiddlewaretoken]").val());
    data.append("audio_file", blob, "test");
    // Display the key/value pairs
    for(var pair of data.entries()) {
       console.log(pair[0]+ ', '+ pair[1]); 
    }
    $.ajax({
      type: "POST",
      url: $("#post_url").val(),
      data: data,
      processData: false,  // prevent jQuery from converting the data
      contentType: false,  // prevent jquery from changing something else as well 
      success: function(response) {
        alert(response);
      }
    });
  })
});

当我发出此请求时,我会在控制台中看到此信息...

csrfmiddlewaretoken, 3YBQrdOUkquRDD5dN0hTJcUXYVFiNpSe
audio_file, [object File]

然后在我的django CBV中,在第一行中放置一个print request.POST.items() ,这样我就可以看到进来的东西。在我的终端中,我看到了这个...

 [(u'csrfmiddlewaretoken', u'mymiddlewaretokenvalue')]

发布请求中根本没有audio_file密钥。 为什么会在javascript控制台中显示然后在django请求中消失?

将来我还会看到一个潜在的问题,因为我认为javascript控制台只是在打印[object File]的字符串,这显然不会执行我想要的操作。

有什么下一步的想法吗?

正如Daniel Roseman所写,上载的文件最终位于request.FILES 还有一件事-来自jQuery文档:

从jQuery 1.6开始,您可以传递false来告诉jQuery不要设置任何内容类型标头。

和Django文档规定:

请注意,仅当请求方法为POST并且发布请求的表单具有属性enctype =“ multipart / form-data”时,request.FILES仅包含数据。 否则,request.FILES将为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM