我已经在墙上敲了好几个小时。我正在尝试使用recorder.js
此示例中的源https://webaudiodemos.appspot.com/AudioRecorder/
现在,我想对其进行修改,以使用户可以听到播放给他们的音频,然后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 CBVprint 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将为空。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句