【问题标题】:html5 localstorage binary pdfhtml5本地存储二进制pdf
【发布时间】:2012-10-19 21:46:56
【问题描述】:

是否可以在 localStorage 上保存并重新打开 pdf 文件? 我正在 Android 项目上使用 Cordoba 2.1。 我需要从 URL 下载 pdf 文件并将其存储在私人文件夹中,我的应用程序之外的用户无法访问。比我需要打开这些文件。 如果我下载文件抛出 FileTransfer.download(),我不知道如何将文件保存在私人文件夹中。 所以我想使用 JQuery.get() 函数将文件保存在 localStorage 上,但我不知道如何取回文件以使用我的意图函数打开。

【问题讨论】:

    标签: android html pdf cordova local-storage


    【解决方案1】:

    当您在 Android 上调用 FileTransfer.download() 时,您想要做的是为您的应用程序指定私有文件夹。它位于 /data/data/{package name}。其中 {package name} 是存储为 AndroidManifest.xml 文件的 manifest 标记的 package 属性的字符串。

    /data/data/{package name} 目录位于您设备的内部存储中。每个 Android 应用程序都以自己的独立 UNIX 用户 ID 运行。您放在 /data/data/{package name} 目录中的任何内容都归该 UNIX 用户 ID 所有,这可以保护它免受其他应用程序的访问。

    【讨论】:

    • 我试过了,但现在我用 Intent 启动的应用程序无法打开文件:“文档的路径无效”。 window.plugins.webintent.startActivity({ action: WebIntent.ACTION_VIEW, type: "application/pdf", url: root + filename}, function() {},function() {});
    【解决方案2】:

    坏消息,没有像“私人文件夹”这样的东西。

    您可以访问存储在智能手机上的文件。如果您将文件存储在本地存储中,那么可能会起作用。可以从设备中读取本地存储,并且可以提取您的 PDF。

    如果要确保没有人可以读取文件,则必须编写一个插件来加密文件。

    更新: 问题是,文件是否必须是安全的,或者只是难以阅读。

    【讨论】:

    • 这不是 100% 正确的。在 Android 上,您可以将文件存储在只有您的应用可以访问的私有文件夹中。
    • 如果您可以访问设备和 USB 数据线,您可以访问包括应用程序在内的所有文件。
    • 确定吗?有一些工具可用于非 rootet iOS 设备,可让您浏览设备上的所有文件。我很确定,有类似的工具可用于非 rootet Android 设备。现在取决于内容的安全性。如果可以让他们解密私人文件夹就可以了。可能是应用程序必须检查设备是否是 rootet 并停止工作(如果内容必须是安全的)。不知道是否可以检查它的rootet。
    • 不,你需要root。由于每个应用程序都作为单独的 uid 运行,除非您是该 uid 或者您是 root,否则您无法进入它们的目录。如果您的用户有一个根电话,那么所有的赌注都没有了。至少通过将文件隔离到自己的应用程序目录结构中,您正在尽最大努力。
    • 正如我所说,如果我尝试将文件保存在 localStorage 上或在“/data/data/{package name}”文件夹中使用 fileTransfer,pdf 阅读器不会读取它。有人打电话告诉我以这种方式阅读它的正确方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2011-02-07
    • 2018-03-03
    • 1970-01-01
    相关资源
    最近更新 更多