2014-10-02 4 views
0

Я пытаюсь загрузить аудиозапись в Parse через их REST API. Я загружаю blob в мое приложение Flask и затем конвертирую этот файл в строку base64, которая будет отправлена ​​в Parse.Загрузите аудиофайл в Parse REST API через Flask

Ответ от 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

Вы пытались воспроизвести звук после его загрузки? Я имею в виду, вы превращаете его в поток base64. Получите этот поток и вернитесь в файл и попробуйте воспроизвести его, чтобы проверить, нормально ли работает обратный процесс. –

+1

Ошибка при загрузке, если вы не кодируете base64? Похоже на ненужный шаг. – wberry

+0

@wberry Я не могу поверить, что я никогда не пробовал не кодировать, передавая wav.read() вместо b64 исправил его. – ParleParle

ответ

1

Стадию base64 кодирование не требуется. Файл может быть размещен без каких-либо преобразований и должен воспроизводиться. Если вы можете использовать потоковое скачивание, это также может повысить производительность клиента.

Смежные вопросы