无法在android混合应用程序(intel XDK crosswalk build)中用javascript保存文件
我正在为android平台开发javascript应用程序,使用intel XDK构建apk文件。我正在使用android build的Crosswalk和选中的API来读取、写入和导航文件系统层次结构,基于W3C文件API选项。我可以轻松打开文件,但无法将其保存到设备 为了保存,我使用了以下代码(该代码在桌面chrome浏览器中运行良好):无法在android混合应用程序(intel XDK crosswalk build)中用javascript保存文件,javascript,android,cordova,intel-xdk,crosswalk-runtime,Javascript,Android,Cordova,Intel Xdk,Crosswalk Runtime,我正在为android平台开发javascript应用程序,使用intel XDK构建apk文件。我正在使用android build的Crosswalk和选中的API来读取、写入和导航文件系统层次结构,基于W3C文件API选项。我可以轻松打开文件,但无法将其保存到设备 为了保存,我使用了以下代码(该代码在桌面chrome浏览器中运行良好): 我的android设备写入:完成下载文件并在下载文件夹中显示文件:png;base64,ivborw0kggoaaa…6z3qaaabjru5erkj
我的android设备写入:完成下载文件并在下载文件夹中显示文件:png;base64,ivborw0kggoaaa…6z3qaaabjru5erkjggg==.bin
。文件大小是0KB,而且我注意到文件名正是我试图保存的img的base64插值
如何解决这个问题并能够保存文件?Crosswalk是一个web运行时,它不像其他浏览器那样提供下载管理器UI,它不应该是运行时的目标。当用户单击下载的链接时,Crosswalk会生成Android选择的下载管理器,它会启动下载管理器或默认浏览器来下载资源 如果web开发人员希望下载一个文件并将其保存到设备(本机文件系统),我认为Cordova download api现在应该是一个不错的选择。 请参阅:
它符合您的要求吗?而且Crosswalk计划支持本机文件系统,也许它将登陆Crosswalk 6,我不确定确切日期。
支持本机文件系统后,web开发人员可以使用XmlHttpRequest API下载文件,并直接通过Crosswalk filesystem API而不是Cordova download API将其保存到设备(本机文件系统)上。Cordova有用于上传/下载文件的API。这能满足你的需要吗@rscohn2,这个API在加载之前是否有提示,您可以在其中选择类似于中的路径?
<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>