首页 > 解决方案 > 如何使用 AJAX 和 jQuery 将 blob 音频发布到 Python 服务器?

问题描述

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

这是我的 app.js 文件中的代码片段

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);
    }
});

标签: jquerydjangoajaxblobpython-server-pages

解决方案


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);
        }
    });
}

视图.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”中


推荐阅读