我希望这是发布在正确的部分,但如果我在其他地方最好的话,我可以随时告诉我是否应该在另一个主题中重新打开主题 .

问题:有没有办法从以下位置传输文件:

assets / folder / file.pdf

至:

file.dataDirectory()(要去的文件的本机目录)

目前我有以下代码,一个文件(比如file.pdf)位于'assets / folder / file.pdf'中,我希望在iOS / android中带上'open with'部分,这样文件就可以了在另一个PDF填充应用程序中打开,如adobe reader . 在浏览网页后,我最好的选择是使用'cordova-file-opener2'插件,该插件专门允许在外部应用程序中打开文件 . 但是,此插件发生的一个轻微问题是文件必须从本机存储位置打开,而不是'assets / folder'文件夹,因此我需要将当前驻留在'assets / folder'中的PDF保存到原生文件夹 .

代码到目前为止:

this.file.checkFile(this.file.dataDirectory, 'file.pdf').then((result:boolean) => {
  //annoying quirk with plugin means 'result' wont return false, instead i have to use catch to know the file doesn't exist
}).catch((err) => { 
  this.file.moveFile('assets/folder/', 'file.pdf', this.file.dataDirectory, 'file.pdf').then(() => {
    this.fileOpener.open(this.general.dataDirectory + 'file.pdf', 'application/pdf').then(() => {
      alert('success');
    }); 
  });
});

我还有代码块来阻止任何错误,我现在得到以下内容:

{"code":5,"message": "ENCODING_ERR"}

从代码的 .moveFile() 部分,我假设是由于没有找到有问题的file.pdf . 现在我明白documentViewer插件允许相同的功能,但是我希望直接显示文件中的open而不是显示空白文件,并希望用户单击右上角的'share'箭头在另一个应用程序中打开(糟糕的UX) .

或者,如果有办法将file.pdf直接存入存储而不必先从assets文件夹中传输它,我认为这也可以 .

任何有助于解决此问题的帮助都提前了解 . 谢谢 .