jquery - 如何使用 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);
}
});
解决方案
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”中
推荐阅读
- javascript - 放入Vue方法时功能不起作用
- google-bigquery - BigQuery 存储过程 - 在 UPDATE 语句中使用变量作为表名
- python - 无法在 ubuntu 上安装 pyinstaller
- mysql - 将本地数据库更新为复制服务器数据库
- css - 有没有办法在 Django 模板中动态添加 CSS/JS 文件?
- elasticsearch - 将 dynamic_date_formats 添加到现有索引 - 我需要重新摄取我的数据吗?
- javascript - 如何防止用户在回答问题之前重定向到下一页
- c# - 如何通过 MethodInfo 获得简化的 ReturnType?
- php - PHP - 获取当前星期的天数
- reactjs - Next JS 和 Redux:getInitialProps 不返回 props