【发布时间】:2016-03-25 05:28:20
【问题描述】:
我们有一个使用 Phonegap 3.6.3 并使用 Phonegap build 构建的应用。 作为此应用程序的一部分,我们需要将文件下载到用户的设备上。该文件可能是 .pdf、图像或任何二进制文件。
我们希望在应用中下载带有blob:file链接的文件,而不是使用file-transfer之类的插件。
文件从 Base64 数据转换并创建 Blob 对象。 objectURL 是通过 window.URL.createObjectURL() 生成的,它被添加到 a 元素的 href 属性中。
DOM 包含以下内容
<a href="blob:file%3A///cf2e336c-8c10-4e54-9e99-26f7d5a0115f" download="1.jpg" style="display: none;"></a>
在桌面上,这没有问题,但在与 cordova 3.6.3 打包的应用程序中,它只是默默地失败。
我怀疑它与cordova 中的白名单功能有关。 在问题https://stackoverflow.com/a/31945728/250787 中,其他人使用cordova-plugin-whitelist 解决了同样的问题。 不幸的是,这个插件只适用于cordova 4.0+
我尝试过使用 access origin 元素,但这些语句似乎都没有效果
<access origin="blob:*" launch-external="yes" />
<access origin="blob:*"/>
我已经有一个访问源来限制应用主后端系统的流量
<access origin="https://mobilbackend.mycompany.com/*"/>
如何解决?
【问题讨论】:
-
@dpamas,您真的在使用 Phonegap Build,Phonegap 的云服务吗?您是否也在使用 Phonegap CLI,即在您的机器上本地运行的命令行版本?
-
@JesseMonroy650 是的,我真的在使用基于云的 Phonegap 构建服务 :) 因此,我无法直接对生成的 android 类进行任何更改,并且仅限于它们在其中公开的配置选项config.xml 文件。我没有使用 Phonegap CLI。
-
@dpamas,显然你对 Cordova/Phonegap 的工作方式有一些误解。几乎任何你需要做的事情都可以通过插件来完成。如果您想创建类,可以创建自己的插件。 Plugin Development Guide。请稍等片刻回答。
-
@dpamas,你的帖子让我很困惑,因为 Phonegap Build 没有版本 3.6.5 listed as being avaiable。我必须假设你的帖子有错字。现在要明确一点,您必须设置编译器的版本,否则您将获得最新版本 - 当前为
cli-5.2.0。另一个因素是,如果您使用的是最新的编译器版本,则需要使用新的whitelist系统。此外,Google 和 Apple 现在都需要此类过滤器。 -
另外一点,Tools Release 版本不同于“固定版本”,可能是您引用的版本。您可以通过
phongap-versionpreference 设置编译器版本。 FWIW:我有教程可以让你度过whitelist的混乱。
标签: file cordova blob phonegap-build