gpt4 book ai didi

javascript - django post请求未在终端中显示javascript blob对象

转载 作者:行者123 更新时间:2023-12-03 06:18:52 25 4
gpt4 key购买 nike

我已经用头撞墙几个小时了。我正在尝试使用此示例 https://webaudiodemos.appspot.com/AudioRecorder/ 中的源代码来使用 recorder.js

现在我想修改它,以便用户能够听到播放给他们的音频,然后如果他们喜欢,他们就有机会将其上传到服务器。我通过将方法 createObjectURL(blob) 的返回值添加到音频元素来播放音频。太棒了

现在我只需要编写一个 post 请求并将其发送到我的 django 实例以在 View 中处理它......这就是它变得奇怪的地方。

我使用 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 请求中?

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

下一步该去哪里有什么想法吗?

最佳答案

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

As of jQuery 1.6 you can pass false to tell jQuery to not set any content type header.

和 Django 文档指出:

Note that request.FILES will only contain data if the request method was POST and the form that posted the request has the attribute enctype="multipart/form-data". Otherwise, request.FILES will be empty.

关于javascript - django post请求未在终端中显示javascript blob对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38955447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com