3

我正在使用英特尔 XDK 为 android 平台开发 javascript 应用程序来构建 apk 文件。我正在使用Crosswalk 进行 android 构建,并根据 W3C 文件 API选项选中一个 API 来读取、写入和导航文件系统层次结构。我可以轻松打开文件,但无法将它们保存到设备。

为了保存,我确实使用了以下代码(该代码在桌面 chrome 浏览器中运行良好):

<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
</head>
<body>
    <img id="img"/>

<script>
    saveImg = function (img, fileName) {
        var a = document.createElement('a');
        a.setAttribute('href', img.src);
        a.setAttribute("download", fileName);
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);
    };

    $(document).ready(function () {
        var img = document.getElementById('img');
        img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAASUlEQVRo3u3PAQ0AIAwDsIGC+TcLLkhOWgddSU6G a5udT4iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi8cQEjUgGTmE6z3QAAAABJRU5ErkJggg==";
        img.onload = onload;
        function onload(){
            saveImg(img, 'savedImg');
        };
    });
</script>
</body>
</html>

我的android设备写:完成下载文件并在下载文件夹中出现文件:png;base64,iVBORw0KGgoAAAA...6z3QAAAABJRU5ErkJggg==.bin. 文件大小为 0KB,而且我注意到文件名正是我试图保存的 img 的 base64 解释。

如何解决这个问题并能够保存文件?

4

2 回答 2

2

Crosswalk 是一个 Web 运行时,它不像其他浏览器那样提供下载管理器 UI,它不应该是运行时的目标。当用户单击下载的链接时,Crosswalk 会生成 Android 选择的下载管理器,它会启动下载管理器或默认浏览器来下载资源。

如果 Web 开发人员想要下载文件并将其保存到设备(本机文件系统),我认为 Cordova 下载 api 现在应该是一个不错的选择。请参阅:https ://cordova.apache.org/docs/en/3.0.0/cordova_file_file.md.html#FileTransfer 是否满足您的要求?

于 2014-03-08T06:47:57.840 回答
1

而Crosswalk正在计划支持原生文件系统,可能会登陆Crosswalk 6,具体日期我不确定。支持原生文件系统后,Web 开发者可以使用 XmlHttpRequest API 直接通过 Crosswalk 文件系统 API 下载文件并保存到设备(原生文件系统),而不是 Cordova 下载 api。

于 2014-03-08T06:55:48.737 回答