我在尝试向服务器发送声音 blob 时遇到了同样的问题。数据接收到,调用可以看到request.get_data()
如果您仅根据请求调用此方法(请参阅:https://stackoverflow.com/a/23898949/1058203 https://stackoverflow.com/a/23898949/1058203)。
但是,我发现没有简单的方法来正确解析这些数据。
什么对我有用:
首先在客户端将 blob 转换为 base64,然后以 Json 形式发送到服务器:
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function() {
var base64audio = reader.result;
// may not apply or differ in your case
var prefixToDrop = 'data:audio/wav;base64,';
var base64audioCut = base64audio.substring(prefixToDrop.length);
callbackFn(base64audioCut)
};
使用 JQuery 在回调中发送到后端:
$.ajax({
type: 'POST',
url: '/receiveAudio',
data: JSON.stringify({
"type": "wav",
"base64audio" : base64audioCut
}),
dataType:"json",
processData: false,
contentType: "application/json;",
success: function(x){...},
error: function(x){...},
processData: false
});
后端:
@app.route('/receiveAudio', methods=['POST'])
def receiveAudio():
dataKey = 'base64audio'
json = request.get_json()
if not dataKey in json:
return abort(400, "Missing 'base64audio' key")
base64_decoded = base64.b64decode(json[dataKey])