Попытка загрузить записываемый файл из локальной файловой системы после записи, используя cordova captureAudio () - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь перехватить звук -> получить файл -> отправить двоичную строку аудиофайла через 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); } );
    });
  }

Кто-нибудь знает, что может происходить?

Спасибо!

...