从文件:/// data / user / 0 /…读取ionic4 android上的本地文件内容(json),路径不起作用

问题描述 投票:1回答:1

我在使用ionic-framework在android上获取本地文件数据时遇到了一个非常奇怪的问题。

情况:我有一个先前在路径file:///data/user/0/app-id/files/my-folder/xyz.json

上创建的文件

我可以在“ adb shell”中找到该文件,我还使用cat检查了其中的数据,一切正常。通过Android Studio Studio文件浏览器,我还检查了文件。

使用本机文件插件'@ ionic-native / file / ngx',我也可以确认文件在那里。

const jsonFile = "pathToFile";
this.file.resolveLocalFilesystemUrl(jsonFile).then(fileEntry => {
      console.log(fileEntry.nativeURL);
    }).catch(err => {
      console.log(err);
    });

结果:

filesystem: FileSystem {name: "files", root: DirectoryEntry}
isDirectory: false
isFile: true

它还会解决其他正确的内容,例如名称,fullPath,nativeURL

现在问题开始了,因为我找不到获取数据的方法。

this.file.readAsText('', jsonFile).then(fileData => {...
this.file.readAsDataURL('', jsonFile).then(fileData => {...
this.file.readAsBinaryString('', jsonFile).then(fileData => {...
this.file.readAsArrayBuffer('', jsonFile).then(fileData => {...

它们全部都产生一个{code:5,消息:“ ENCODING_ERR”}

我还尝试通过本地http插件,获取和正常的http角度请求来获取数据...

一切都会导致cors,404等。

总而言之,我如何从指向file:/// data / user / 0 / app-id / files / ...]的本地路径中获取json-data

离子信息:

Ionic:

   Ionic CLI                     : 5.4.2 (xxxx/.npm-packages/lib/node_modules/ionic)
   Ionic Framework               : @ionic/angular 4.10.0
   @angular-devkit/build-angular : 0.801.3
   @angular-devkit/schematics    : 8.1.3
   @angular/cli                  : 8.1.3
   @ionic/angular-toolkit        : 2.0.0

Cordova:

   Cordova CLI       : 9.0.0 ([email protected])
   Cordova Platforms : android 8.1.0
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.1.2, (and 7 other plugins)

Utility:

   cordova-res : 0.7.0
   native-run  : 0.2.8

System:

   Android SDK Tools : 26.1.1 (xxxx/Library/Android/sdk)
   ios-deploy        : 1.9.4
   NodeJS            : v12.10.0 (/usr/local/Cellar/node/12.10.0/bin/node)
   npm               : 6.11.3
   OS                : macOS Mojave
   Xcode             : Xcode 11.0 Build version 11A420a

我在使用ionic-framework在android上获取本地文件数据时遇到了一个非常奇怪的问题。情况:我有一个先前在路径file:/// data / user / 0 / app-id / files / my-folder / ...]中创建的文件。

无效的文件名?
根据this post,可能是您的文件名包含无效字符,例如,:在Windows上无效,因此保留。
删除并添加平台?

似乎有人通过删除和添加平台解决了这个问题:

https://github.com/ionic-team/ionic-native/issues/3007

将file:///转换为http url?

    起初,我认为这是问题所在,并开始编写,但现在我对此信心不足。保留它以防它有帮助:
  • 如果您检出this blog post,则说明文件网址:
  • const displayImage = this.webview.convertFileSrc(storedPhoto);

android cordova ionic-framework cordova-plugins ionic4
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.