Как загрузить файл с ionic 5

#ionic-framework

#ionic-framework

Вопрос:

Я пытаюсь загрузить файл с помощью своего приложения ionic, но он не работает, файл представляет собой видеофайл, и я хочу показать индикатор выполнения при его загрузке, как это будет работать, так это то, что когда пользователь нажимает на загрузить, он проверяет AppName , существует ли каталог, это не онсоздаст каталог, затем загрузит файл внутри каталога.

Вот мой код

 download() {
    this.chkmkDir().then(async ()=>{
        const fileTransfer: FileTransferObject = this.fileTransfer.create();
        this.storageDirectory = `${this.file.dataDirectory}${api.AppName}/`;
        fileTransfer.onProgress((progressEvent)=>this.progress=Math.round((progressEvent.loaded / progressEvent.total) * 100))
        let fileName=await this.service.getFileName('mp4')
        var URL = encodeURI('test.mp4');
        fileTransfer.download(URL,`${this.storageDirectory}${fileName}`, true)
    })
}
chkmkDir(){
    return new Promise((resolve, reject)=>{
        this.file.checkDir(this.file.dataDirectory, api.AppName).then(res=>resolve()
        ).catch(err => {
            this.file.createDir(this.file.dataDirectory, api.AppName,false).then(res =>resolve())
            .catch(err=>reject(JSON.stringify(err))); 
        });
    })
} 
  

Пожалуйста, что я делаю не так, я получил эту ошибку в консоли
ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'then' of undefined TypeError: Cannot read property 'then' of undefined

Ответ №1:

Плагин, который вы используете, просто отсутствует. Ваш код не может считывать классы из плагина. Это может произойти из-за несовместимости плагинов или других проблем с зависимостями, связанных с плагинами.

Это также может произойти, если вы неправильно установили или настроили плагин. Пожалуйста, проверьте ваш файл app.module.ts. А также проверьте, регистрируется ли в консоли какая-либо ошибка, связанная с несовместимостью версий плагинов. Вкратце, все ваши плагины должны иметь ту же версию, что и ваша версия «@ionic-native / core».

Пример:

package.json

 "@ionic-native/core": "^5.0.0",
"@ionic-native/diagnostic": "^5.0.0",
"@ionic-native/dialogs": "^5.0.0",
"@ionic-native/file": "^5.0.0",
"@ionic-native/file-path": "^5.0.0",
"@ionic-native/file-transfer": "^5.0.0",
"@ionic-native/http": "^5.0.0",
  

Комментарии:

1. я пробовал это, но это не сработало. проблема в том, что эта функция this.file.checkDir(), this.file.createDir() не рассматривает ее как обещание, метод then, который я добавил к нему, выдает мне ошибку ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'then' of undefined TypeError: Cannot read property 'then' of undefined

2. this.file.createDir поступает из библиотеки плагинов, которая вызывает собственный плагин. Который будет неопределенным, если он не установлен должным образом.

3. Попробуйте этот код: «ionic cordova platform rm android» в вашей консоли, а затем «ionic cordova platform добавить Android». Он переустановит ваши плагины Cordova

4. Я тоже попробовал, но все равно получил то же сообщение об ошибке

5. Есть ли какая-либо ошибка компиляции?. Попробуйте сделать это с помощью «ionic cordova run android —device —verbose»