我正在尝试为Android和iOS创建一个PhoneGap应用程序。
到目前为止,我已经成功地在Android 2.2及更高版本上访问了LocalFileSystem。
在iOS(5和6)上,遗憾的是我没有这样的运气。
FileReader和FileWriter示例也无效。
我花了一些时间使用jsconsole.com调试它,据我所知,window.requestFileSystem和window.webkitRequestFileSystem都是未定义的。 这可以解释为什么我的文件系统有问题。
我正在使用Cordova 2.2.0和XCode 4.5作为iOS部分。
示例和我自己的代码都在Android上运行。
如果你们有任何建议,我会非常感谢它对我的心理健康产生的积极影响!
编辑:
index.html :
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
<title>Hello World</title>
</head>
<body>
<div class="app">
<a href="javascript:myfs.clicked()">click!</a>
</div>
<script type="text/javascript" src="cordova-2.2.0.js"></script>
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
<script src="http://jsconsole.com/remote.js?secret-debug-key"></script>
<script type="text/javascript" src="js/filesystem.js"></script>
<script type="text/javascript">
var myfs;
document.addEventListener('deviceready', function() {
myfs = new FS();
myfs.initializeFileSystem();
});
</script>
</body>
</html>
filesystem.js :
var FS = (function()
{
var self = {};
self.initializeFileSystem = function()
{
window.requestFileSystem = window.webkitRequestFileSystem || window.requestFileSystem;
window.requestFileSystem(1, 0, self.gotFS, self.fail);
};
self.gotFS = function (fileSystem)
{
window.rootFS = fileSystem.root;
//create our cache directory if it does not exist
var entry = fileSystem.root;
entry.getDirectory("tempdirectory", {create: true, exclusive: false}, function() {console.log("directory already present or created");}, function(error) {console.log("Error creating directory " + error.code);});
};
self.fail = function()
{
console.log("requestFileSystem failed");
};
self.downloadImage = function(url, fileName, callback)
{
var ft = new FileTransfer();
var filename = fileName;
var callback = callback;
ft.download(
url,
window.rootFS.fullPath + "/" + filename,
function(entry)
{
if(callback!= undefined)
{
callback(entry);
}
},
function(error)
{
console.log("download error: " + error.code);
}
);
};
self.clicked = function()
{
//random test URL
var url = "http://www.embeddedpeople.dk/_/rsrc/1301663383918/home/ydelser/konsulentydelser/test/test.png?height=400&width=350";
self.downloadImage(url, "test.png", function(){console.log("download succesful");$('body').append('<img src="file:///data/data/dk.attention8.filesystem/test.png" />');});
return false;
};
return self;
}
);
这适用于Android,点击完成后,文件被下载,并且应该在DOM中插入包含对下载图像路径的引用的img标记。
我知道这条路径在iOS上无效,也没有SD卡设备上的正确路径,但是在添加img标签之前就出现了问题。
此图片应显示javascript代码在Android中运行(取自Android模拟器)。
如果您需要进一步澄清或有疑问,我会尽快提供 谢谢你的时间!
答案 0 :(得分:0)
我终于解决了这个问题。
我有一个常见的“www”文件夹,我将从我的Android转移到我的iOS项目。
我天真地覆盖了整个www文件夹,这导致了问题。
www文件夹根目录中的cordova.js文件是特定于平台的,因此我在iOS项目中使用了Android cordova.js文件,这显然无效。
感谢fmertz对#phonegap指出了我正确的方向。