【发布时间】: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