Я пытаюсь перехватить звук -> получить файл -> отправить двоичную строку аудиофайла через html.
Кажется, что записывающая часть работает нормально, тогда мне удается правильно выбрать путь к файлу. Но затем, когда я пытаюсь загрузить его с помощью метода File.readasBinaryString (), обещание, кажется, никогда не разрешается (ни успех, ни ошибка не отображаются).
При просмотре журналов мобильного телефона я Я тестирую мое приложение, кажется, что функция выполнена, но журнал немного криптит c:
2020-01-13 17:23:34.692 29757-30459/io.ionic.starter V/Capacitor/Plugin: To native (Cordova plugin): callbackId: File435512590, service: File, action: getFile, actionArgs: ["cdvfile:\/\/localhost\/sdcard\/MIUI\/sound_recorder\/","13 ene. 5.23 p. m..mp3",{"create":false}]
2020-01-13 17:23:34.715 29757-30459/io.ionic.starter V/Capacitor/Plugin: To native (Cordova plugin): callbackId: File435512591, service: File, action: getFileMetadata, actionArgs: ["cdvfile:\/\/localhost\/sdcard\/MIUI\/sound_recorder\/13%20ene.%205.23%20p.%20m..mp3"]
2020-01-13 17:23:34.723 29757-30459/io.ionic.starter V/Capacitor/Plugin: To native (Cordova plugin): callbackId: File435512592, service: File, action: readAsBinaryString, actionArgs: ["cdvfile:\/\/localhost\/sdcard\/MIUI\/sound_recorder\/13%20ene.%205.23%20p.%20m..mp3",0,29216]
Вот мой код, где я объединяю обещания выполнить все шаги, упомянутые выше:
onRecord() {
this.mediaCapture.captureAudio()
.then(res => {
const fullPath = String(res[0].fullPath);
this.path = String(fullPath.split('sound_recorder/')[0] + 'sound_recorder/');
this.fileName = String(fullPath.split('sound_recorder/')[1]).replace(new RegExp('%20', 'g'), ' ');
console.log('audio path: ', this.path);
console.log('audio file name: ', this.fileName);
}, error => {console.log('media capture error: ', error); })
.then(() => {
console.log('fetching binary data...');
this.mp3File.readAsBinaryString(String(this.path), String(this.fileName))
.then((data) => {
this.binaryData = data;
console.log('fetched binary data: ', this.binaryData);
console.log('sending http...');
const h = new HttpHeaders({'Access-Control-Allow-Origin': '*'});
h.append('Access-Control-Allow-Credentials', 'true');
h.append('Content-Type', 'test');
this.http.post('url',
{
file: data
},
{headers: h}
).subscribe();
}, (error) => {console.log('fetching data error: ', error); } );
});
}
Кто-нибудь знает, что может происходить?
Спасибо!