Ionic FileChooser: Ошибка загрузки имени файла - PullRequest
0 голосов
/ 11 декабря 2018

Я работаю над проектом Ionic.И я должен загрузить файл из хранилища Android.Я использую Ionic native FileChooser Plugin .Проблема в том, что функция возвращает мне uri как:

content://com.android.providers.downloads.documents/document/1112

В то время как фактически выбранный мной файл назывался 'sample.pdf'.Таким образом, Uri должен был быть таким:разрешение URI с использованием функции resolNativePath (uri ), но без решения.Что здесь не так?

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Спасибо за ответ.Позвольте мне остановиться подробнее.URI, возвращаемый FileChooser, равен 'content://com.android.providers.downloads.documents/document/1112', поэтому даже если я использую 'resolNativePath', он выдаст ошибку как: Cannot Resolve Native File Path Unknown URI: content://downloads/public_downloads/1112.Ответ файла, который я получаю по этому URI с использованием 'resolLocalFilesystemUrl', выглядит следующим образом: "{"isFile":true,"isDirectory":false,"name":"1112","fullPath":"/com.android.providers.downloads.documents/document/1112","filesystem":"<FileSystem: content>","nativeURL":"content://com.android.providers.downloads.documents/document/1112"}" Но однажды, если я переименую документ, я получу URI из FileChooser как content://com.android.providers.downloads.documents/document/raw%3A%2Fstorage%2Femulated%2F0%2FDownload%2Fsample.pdf.Именно в этом случае resolNativePath разрешает путь к file:///storage/emulated/0/Download/sample.pdf.

0 голосов
/ 11 декабря 2018

Это связано с тем, что плагину File требуется абсолютный путь к файлу для чтения, а плагину File Chooser возвращается URI и, следовательно, использование resolveNativePathна самом деле поможет вам, вы можете попробовать:

nativePath: any;

 getNativePath () {
   this.fileChooser.open().then((url) => {
   this.filePath.resolveNativePath.resolveNativePath(url, (result) => {
    this.nativePath = result;
    this.uploadImage();
   }
  )
 })
}  

uploadImage() {
     this.file.resolveLocalFileSystemURL(this.nativePath, (res) => {
      res.file((resFile) => {
        var reader = new FileReader();
        reader.readAsArrayBuffer(resFile);
        reader.onloadend = (evt: any) => {
          var imgBlob = new Blob([evt.target.result], { type: 'image/jpeg'});
          //Upload the file
        }
      })
    })
  }

Здесь мы используем File , FileChooser и FilePath Плагины Cordova

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...