Cordova File插件在iOS 11设备上生成的PDF文件无法找到怎么办?
iOS 11上用Cordova File Plugin创建PDF后找不到文件的解决办法
咱先搞明白核心问题:iOS的App都是沙盒机制,每个App都有自己独立的私密文件夹,默认情况下系统的「文件」App、其他应用甚至你自己手动找都没法直接访问这个文件夹里的内容。你用的cordova.file.documentsDirectory和cordova.file.syncedDataDir都是沙盒里的目录,所以才找不到。下面给你几个靠谱的解决办法:
方法一:开启App的文件共享权限(最推荐)
只要给App加两个配置,就能让沙盒里的Documents目录对外可见,步骤如下:
- 打开你的Cordova项目根目录下的
config.xml,添加iOS平台的配置:<platform name="ios"> <!-- 开启文件共享,让App在iTunes和文件App里可见 --> <config-file parent="UIFileSharingEnabled" platform="ios" target="*-Info.plist"> <true/> </config-file> <!-- 允许在文件App里直接打开文件,不用复制 --> <config-file parent="LSSupportsOpeningDocumentsInPlace" platform="ios" target="*-Info.plist"> <true/> </config-file> </platform> - 重新编译你的iOS App(
ionic cordova build ios),然后重新安装到iPhone上。 - 现在再把PDF写到
cordova.file.documentsDirectory,你就能通过两种方式找到文件:- 用系统「文件」App:打开「文件」→「浏览」→拉到「我的iPhone」区域,找到你的App图标,点进去就能看到Documents目录里的PDF了。
- 用iTunes(电脑端):把iPhone连到电脑,打开iTunes→找到你的设备→「文件共享」→选中你的App,右侧就能看到Documents目录里的文件,还能导出到电脑。
方法二:用Xcode查看沙盒文件(测试阶段用)
如果你只是想确认文件确实创建成功了,不用对外共享,可以直接用Xcode查看:
- 把iPhone连到电脑,打开Xcode。
- 顶部菜单选「Window」→「Devices and Simulators」。
- 在左侧列表里找到你的iPhone,然后找到你的App,点击「Download Container」。
- 把下载的容器文件右键解压,就能在
AppData/Documents或者AppData/Library/Cloud里找到你的PDF了。
额外注意事项
- iOS沙盒里的应用ID目录(就是那些随机字符串,比如
CDFC4E19-082F-4878-9168-F4A735CDAFEB)每次重新安装App都会改变,所以你之前记录的旧路径在重新安装后就失效了,这点要留意。 - 可以用Cordova File的
checkFile方法验证文件是否存在,避免路径写错:const filePath = '你的PDF完整路径'; window.resolveLocalFileSystemURL(filePath, (fileEntry) => console.log('文件确实存在:', fileEntry.name), (error) => console.error('文件找不到:', error) );
内容的提问来源于stack exchange,提问作者AndrWeisR




