【问题标题】:django post request is not showing javascript blob object in terminaldjango post请求未在终端中显示javascript blob对象
【发布时间】:2016-12-21 16:19:48
【问题描述】:

我已经为此苦苦挣扎了好几个小时。我正在尝试使用recorder.js 使用此示例中的源代码https://webaudiodemos.appspot.com/AudioRecorder/

现在我想修改它,以便用户可以听到播放给他们的音频,然后如果他们喜欢,他们就有机会将其上传到服务器。我通过将方法 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')]

post 请求中根本没有 audio_file 键。为什么它会在 javascript 控制台中显示,然后在 django 请求中消失?

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

对下一步去哪里有任何想法吗?

【问题讨论】:

  • 你能在 request.FILES 的 Django 中看到它吗?

标签: javascript jquery python django post


【解决方案1】:

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

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

和 Django 文档说明:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-18
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    相关资源
    最近更新 更多