如何使最终用户可以访问由 Cordova iOS APP 动态生成/保存的文件?

Ngo*_*Lam 3 ios cordova cordova-ios cordova-plugin-file

我正在使用cordova-plugin-file将一些数据图像保存到用户的 iOS 手机。

saveBlobAsImageFile(folderpath, filename, blob) {
  const onError = function(msg) {
    // handles error
  }

  window.resolveLocalFileSystemURL(folderpath, function(dir) {
    console.log("Access to the directory granted");
    dir.getFile(filename, { create: true }, function(file) {
      console.log("File created")
      file.createWriter(function(fileWriter) {
        fileWriter.write(blob);
        console.log("Written file")
      }, onError)
    }, onError)
  }, onError)
}
Run Code Online (Sandbox Code Playgroud)

对于folderpath,我尝试了所有这 5 个选项:

let folderpath = cordova.file.syncedDataDirectory;
let folderpath1 = cordova.file.documentsDirectory; 
let folderpath2 = cordova.file.dataDirectory;
let folderpath3 = cordova.file.cacheDirectory;
let folderpath4 = cordova.file.tempDirectory;
Run Code Online (Sandbox Code Playgroud)

运行该函数后saveBlobAsImageFile,日志显示写入成功,但是当我在模拟器/iPhone 中转到文件或库时,我找不到任何已保存的文件。

更新:当我在模拟器中运行时,点击保存后,我发现文件保存在这些文件夹中:

file:///Users/ngoctuan001/Library/Developer/CoreSimulator/Devices/2964FE69-A5FE-4516-B8F1-C45488DBE2B5/data/Containers/Data/Application/1EF9FF0C-903E-481F-87A0-9A1CEDA4DE5D/Library/Cloud/
file:///Users/ngoctuan001/Library/Developer/CoreSimulator/Devices/2964FE69-A5FE-4516-B8F1-C45488DBE2B5/data/Containers/Data/Application/1EF9FF0C-903E-481F-87A0-9A1CEDA4DE5D/Documents/
file:///Users/ngoctuan001/Library/Developer/CoreSimulator/Devices/2964FE69-A5FE-4516-B8F1-C45488DBE2B5/data/Containers/Data/Application/1EF9FF0C-903E-481F-87A0-9A1CEDA4DE5D/Library/NoCloud/
file:///Users/ngoctuan001/Library/Developer/CoreSimulator/Devices/2964FE69-A5FE-4516-B8F1-C45488DBE2B5/data/Containers/Data/Application/1EF9FF0C-903E-481F-87A0-9A1CEDA4DE5D/Library/Caches/
Run Code Online (Sandbox Code Playgroud)

但是,当我转到模拟器文件和库时,找不到这些图像。

如何让 iOS Cordova APP 动态生成的文件可以通过库让最终用户访问?

小智 5

如果您在 plist 文件中添加UIFileSharingEnabled, LSSupportsOpeningDocumentsInPlace,UISupportsDocumentBrowser全部为 YES,您的应用程序文件将对 iOS 资源管理器可见。主要来源在这里

因此你可以编辑你config.xml在里面添加这些条目<platform name="ios">

<edit-config target="UIFileSharingEnabled" file="*-Info.plist" mode="merge">
  <true/>
</edit-config>
<edit-config target="LSSupportsOpeningDocumentsInPlace" file="*-Info.plist" mode="merge">
  <true/>
</edit-config>
<edit-config target="UISupportsDocumentBrowser" file="*-Info.plist" mode="merge">
  <true/>
</edit-config>
Run Code Online (Sandbox Code Playgroud)