我正在尝试使用JavaScript录制音频并将其发送到Python服务器。到目前为止,我已经运行了,并且记录运行良好。我正在尝试使用AJAX发布和获取数据,但无法将其发送到Python。
这是我的代码:
JavaScript:
function submit(blob) {
var reader = new window.FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function() {
var fd = new FormData();
base64data = reader.result;
console.log(base64data);
fd.append('file', base64data, 'audio.ogg');
$.ajax({
type: 'POST',
url: '/',
data: fd,
cache: false,
processData: false,
contentType: false,
enctype: 'multipart/form-data'
}).done(function(data) {
console.log(data);
});
}
Python服务器:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def home():
return render_template("index.html")
@app.route('/', methods=['POST', 'GET'])
def get_data():
with open('./audio.ogg', 'wb') as f:
f.write(request.data)
f.close()
print("FILE CLOSED")
return render_template("index.html")
if __name__ == '__main__':
app.run(debug=True)
答案 0 :(得分:0)
在您的JavaScript中,您尝试将字符串作为文件发送,您应该发送文件/ blob。
见下文
function submit(blob) {
var fd = new FormData();
fd.append('file', blob, 'audio.ogg');
$.ajax({
type: 'POST',
url: '/',
data: fd,
cache: false,
processData: false,
contentType: false
}).done(function(data) {
console.log(data);
});
}
在服务器端代码中,您应该使用request.files
访问上载的文件。
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def home():
return render_template("index.html")
@app.route('/', methods=['POST', 'GET'])
def get_data():
request.files["file"].save('./audio.ogg')
print("FILE CLOSED")
return render_template("index.html")
if __name__ == '__main__':
app.run(debug=True)