如何使用 AJAX 和 jQuery 将 blob 音频发布到 Python 服务器?

Posted

技术标签:

【中文标题】如何使用 AJAX 和 jQuery 将 blob 音频发布到 Python 服务器?【英文标题】:How to POST a blob audio to Python Server using AJAX and jQuery? 【发布时间】:2020-11-05 12:56:20 【问题描述】:

我正在开发一个音频网络应用程序,它记录用户的声音,然后以 .wav/.mp3 文件的形式发布到服务器。我有一些代码可以在我的 .js 文件中发布我的音频 blob,但我不确定它是否正确。我也不确定如何在 Python 服务器端接收 blob 音频并将其下载为 .wav 文件

这是我的 app.js 文件中代码的 sn-p

var formdata = new FormData();
formdata.append("audio", blob, "test.wav")

$.ajax(
  
    type: 'POST',                  
    url: "http://localhost/pyserver.py",
    data: formdata,
    contentType: false,
    processData: false,
        
    success: function (data)                        
        // data is what is sent back to you from the server, handle it here.
        console.log(data);
    ,
    complete: function () 
        // let's say you have a "loading" window up, this is where you close it.
    ,
    error: function (jqXHR, textStatus, errorThrown) 
        // handle error.
        console.log(errorThrown);
    
);

【问题讨论】:

Why is “Can someone help me?” not an actual question? 【参考方案1】:

js文件

function sendAudio(blob)

    var wavFile = new File([ blob ], "audio.wav");      
    var form    = new FormData();
    form.append("myAudio", wavFile);
    
    $.ajax(
    
        url: "/getAudio/",
        type: "POST",
        data: form,
        contentType: false,
        processData: false,
        success: function(getData)
        
            console.log(getData);
        
    );

views.py

def getAudio(request):
    if request.method == "POST":
        if request.FILES.get("myAudio", False):
            handleUploadFile(request.FILES["myAudio"])
    return HttpResponse()

def handleUploadFile(f):  
    with open("myFolder/" + f.name, "wb+") as destination:  
        for chunk in f.chunks():  
            destination.write(chunk)

handleUploadFile 最好放在单独的“function.py”中

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于如何使用 AJAX 和 jQuery 将 blob 音频发布到 Python 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

使用 jquery 图像裁剪器进行 Ajax 图像预览 [blob url]

如何从 azure blob 存储下载文件

如何通过javascript中的ajax调用传递blob值?

如何使用 jquery 和 Ajax 将多个文件字段保存到 django

$.ajax()方法中的processData参数

如何使用 AJAX (jquery) 将嵌套的对象数组传递和接收到 c# WebMethod 中?