我正在尝试通过REST API将录音上传到Parse。我正在将blob上传到我的Flask应用程序,然后将该文件转换为base64字符串以发送给Parse。
Parse的反应是上传成功,但在Parse上浏览文件时音频文件没有播放。
非常感谢任何帮助。
file.wav是uint8array中的录音
// js
ParleData.Upload = function(file) {
var dataView = new DataView(file.wav.buffer);
var blob = new Blob([dataView], { type: 'audio/x-wav' });
var form = new FormData();
form.append('file', blob, 'audio.wav');
return $.ajax({
type: 'POST',
url: '/upload',
contentType: false,
processData:false,
cache:false,
data: form
});
}
# views.py
@app.route('/upload', methods=['POST'])
def upload():
wav = request.files['file']
return jsonify(DAS.upload(wav))
# das.py
def upload(self, wav):
b64 = base64.b64encode(wav.read())
connection = httplib.HTTPSConnection('api.parse.com', 443)
connection.connect();
connection.request('POST', 'https://api.parse.com/1/files/audio', b64, {
'X-Parse-Application-Id':self.keys.X_PARSE_APP_ID,
'X-Parse-REST-API-Key':self.keys.X_PARSE_RESTAPI_ID,
'Content-Type': "audio/x-wav"
})
return json.loads(connection.getresponse().read())
答案 0 :(得分:1)
不需要base64编码步骤。该文件可以在没有任何转换的情况下发布,并且应该可播放。如果您可以使用流式上传,这也可以提高客户端的性能。