如何从PhoneGap iOS中的函数返回具有FileReader的FileContent?
例如,如果我希望fileReader必须返回file的内容值,那么我只返回空字符串。全局变量对我来说不可能使用,只有局部变量。可能吗?如何从PhoneGap iOS中的函数返回具有FileReader的FileContent?,ios,file,cordova,filereader,Ios,File,Cordova,Filereader,例如,如果我希望fileReader必须返回file的内容值,那么我只返回空字符串。全局变量对我来说不可能使用,只有局部变量。可能吗? 我错了什么 编辑: function onDeviceReady() { console.log("==> DEVICE READY"); window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFSSuccess, fileErrorMSG); }
我错了什么 编辑:
function onDeviceReady() {
console.log("==> DEVICE READY");
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFSSuccess, fileErrorMSG);
}
function onFSSuccess(fs) {
fileSystem = fs;
}
function readlocalFile(fileName) {
var core = "";
fileSystem.root.getFile(fileName, {create: false}, function(f) {
f.file(function(e) {
var reader = new FileReader();
reader.onloadend = function(evt) {
var res = $.parseJSON(evt.target.result);
core = res;
};
reader.readAsText(e);
});//f.file()
}, fileErrorMSG);
return core;
}
function loadDefaultCore(url) {
if (url) {
var myCore = readlocalFile(url);
console.log(myCore); // **output - empty string!!!!!!!!**
} else {
alert('can not load default core');
}
}
谢谢有很多事情要考虑。简言之:
//等待Cordova加载//函数onLoad(){document.addEventListener(“deviceready”,onDeviceReady,false);}
//Cordova已准备就绪//函数ondevicerady(){window.requestFileSystem(LocalFileSystem.PERSISTENT,0,gotFS,fail);}
函数gotFS(fileSystem){fileSystem.root.getFile(“readme.txt”,null,gotFileEntry,fail);}
函数gotFileEntry(fileEntry){fileEntry.file(gotFile,fail);}
函数gotFile(file){readDataUrl(file);readAsText(file);}
函数readDataUrl(文件){var reader=new FileReader();reader.onloadend=function(evt){console.log(“读取为数据URL”);console.log(evt.target.result);};reader.readAsDataURL(文件);}
函数readAsText(文件){var reader=new FileReader();reader.onloadend=function(evt){console.log(“读取为文本”);console.log(evt.target.result);};reader.readAsText(文件);}
函数失败(evt){console.log(evt.target.error.code);}
<script type="text/javascript" charset="utf-8">
// Wait for Cordova to load //function onLoad() { document.addEventListener("deviceready", onDeviceReady, false); }
// Cordova is ready //function onDeviceReady() { window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); }
function gotFS(fileSystem) { fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail); }
function gotFileEntry(fileEntry) { fileEntry.file(gotFile, fail); }
function gotFile(file){ readDataUrl(file); readAsText(file); }
function readDataUrl(file) { var reader = new FileReader(); reader.onloadend = function(evt) { console.log("Read as data URL"); console.log(evt.target.result); }; reader.readAsDataURL(file); }
function readAsText(file) { var reader = new FileReader(); reader.onloadend = function(evt) { console.log("Read as text"); console.log(evt.target.result); }; reader.readAsText(file); }
function fail(evt) { console.log(evt.target.error.code); }
</script>