j7n*_*n7k 43 android ios jquery-mobile cordova
我写了一个jQuery Mobile应用程序,并将它与Phonegap打包到iOS和Android应用程序.
此时我使用本地存储的json文件来读取数据.
我想通过从服务器下载更新的json文件来不时更新这些json文件.
如何从服务器获取json并将json文件存储到Android和iOS的本地文件系统?
干杯Johe
jus*_*oon 94
使用FileTransfer.download
,这是一个例子:
function downloadFile(){
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
function onFileSystemSuccess(fileSystem) {
fileSystem.root.getFile(
"dummy.html", {create: true, exclusive: false},
function gotFileEntry(fileEntry) {
var sPath = fileEntry.fullPath.replace("dummy.html","");
var fileTransfer = new FileTransfer();
fileEntry.remove();
fileTransfer.download(
"http://www.w3.org/2011/web-apps-ws/papers/Nitobi.pdf",
sPath + "theFile.pdf",
function(theFile) {
console.log("download complete: " + theFile.toURI());
showLink(theFile.toURI());
},
function(error) {
console.log("download error source " + error.source);
console.log("download error target " + error.target);
console.log("upload error code: " + error.code);
}
);
}, fail);
}, fail);
};
}
Run Code Online (Sandbox Code Playgroud)
j7n*_*n7k 24
这就是我解决它的方式.首先设置文件路径,Android和iOS都不同
var file_path;
function setFilePath() {
if(detectAndroid()) {
file_path = "file:///android_asset/www/res/db/";
//4 Android
} else {
file_path = "res//db//";
//4 apache//iOS/desktop
}
}
Run Code Online (Sandbox Code Playgroud)
然后我将我的JSON文件加载到本地浏览器存储中,这些文件与应用程序一起预先打包.像这样:
localStorage["my_json_data"] = loadJSON(file_path + "my_json_data.json");
function loadJSON(url) {
return jQuery.ajax({
url : url,
async : false,
dataType : 'json'
}).responseText;
}
Run Code Online (Sandbox Code Playgroud)
如果我想更新我的数据.我从服务器获取新的JSON数据并将其推送到本地存储.如果服务器位于不同的域(大多数情况下是这种情况),则必须进行JSONP调用(在JSONP上检查jQuery的文档).我这样做有点像:
$.getJSON(my_host + 'json.php?function=' + my_json_function + '&callback=?', function (json_data) {
//write to local storage
localStorage["my_json_data"] = JSON.stringify(json_data);
});
Run Code Online (Sandbox Code Playgroud)
您可以在一行代码中执行此操作:
new FileManager().download_file('http://url','target_path',Log('downloaded success'));
Run Code Online (Sandbox Code Playgroud)
target_path:可以包含目录(例如:dira/dirb/file.html),并且将以递归方式创建目录.
您可以在此处找到要执行此操作的库:
https://github.com/torrmal/cordova-simplefilemanagement
归档时间: |
|
查看次数: |
94188 次 |
最近记录: |