无法获取文件进行解析
Unable to get file for parsing
背景:我已经下载并存储了一些文件到我的phone。我想一个接一个地检索这些文件并单独解析它们。解析的结果用于进一步的计算。
问题:文件没有被正确提取。所以解析也没有正常发生。我到目前为止的代码:
var knownFiles=[];
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
function(fs){
fs.root.getDirectory('Amazedata', null,
function(d){
var dirReader = d.createReader();
dirReader.readEntries(function(entries){
if (!entries.length) {
alert('FileSystem is Empty');
}
else{
for(var i=0; i<entries.length;i++){
knownFiles.push(entries[i].name);
var file = entries[i].fullPath;
//console.log(file);
Papa.parse(file,{
header: true,
dynamicTyping: true,
complete: function(){
var totAmt =0;
for(var i=1;i<=arguments[0].data.length;i++){
if(!arguments[0].data[1][2]){
totAmt += arguments[0].data[i][28];
}
}
var payerObj={
'PayerAccountID' : arguments[0].data[1][1],
'PayerAccountName' : arguments[0].data[1][8],
'TotalAmount' : totAmt
};
payerAccArr.push(payerObj);
$('#loading1').removeClass('show').addClass('hide');
$('#content-Container').removeClass('hide').addClass('show');
},
error: errorFn
});
}
// for(var i=0;i<knownFiles.length;i++){
// }
}
}, onError);
}, onError );
}, onRequestError);
如何获取要解析的文件?我错过了什么?我得到的错误是
TypeError: Unable to get reference for 1
我正在使用 Papa.parse 进行解析。
我能够使用 getFile
和 fileEntry.file
方法解决这个问题。代码编辑如下:
var knownFiles=[];
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
function(fs){
fs.root.getDirectory('Amazedata', null,
function(d){
var dirReader = d.createReader();
dirReader.readEntries(function(entries){
if (!entries.length) {
alert('FileSystem is Empty');
}
else{
var dirLength = entries.length;
for(var i=0; i<entries.length;i++){
knownFiles.push(entries[i].name);
var reqfile = entries[i].fullPath;
d.getFile(reqfile,{},
function(fileEntry){
fileEntry.file(function(file){
Papa.parse(file,{
header: true,
dynamicTyping: true,
complete: function(){
//console.log(arguments);
var parserObj = arguments[0];
var totAmt =0;
for(var j=0; j<parserObj.data.length; j++){
if(!parserObj.data[j].LinkedAccountId){
totAmt += parserObj.data[j].TotalCost ? parseInt(parserObj.data[j].TotalCost) : 0;
}
}
console.log('total amount', totAmt);
var payerObj={
'PayerAccountID' : parserObj.data[0].PayerAccountId,
'PayerAccountName' : parserObj.data[0].PayerAccountName,
'TotalAmount' : totAmt
};
console.log('payerObj',payerObj);
payerAccArr.push(payerObj);
if(payerAccArr.length == dirLength)
break;
},
error: errorFn
});
});
});
//console.log(file);
}
fileEntry.file
returns 一个可用于解析的文件对象。
背景:我已经下载并存储了一些文件到我的phone。我想一个接一个地检索这些文件并单独解析它们。解析的结果用于进一步的计算。
问题:文件没有被正确提取。所以解析也没有正常发生。我到目前为止的代码:
var knownFiles=[];
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
function(fs){
fs.root.getDirectory('Amazedata', null,
function(d){
var dirReader = d.createReader();
dirReader.readEntries(function(entries){
if (!entries.length) {
alert('FileSystem is Empty');
}
else{
for(var i=0; i<entries.length;i++){
knownFiles.push(entries[i].name);
var file = entries[i].fullPath;
//console.log(file);
Papa.parse(file,{
header: true,
dynamicTyping: true,
complete: function(){
var totAmt =0;
for(var i=1;i<=arguments[0].data.length;i++){
if(!arguments[0].data[1][2]){
totAmt += arguments[0].data[i][28];
}
}
var payerObj={
'PayerAccountID' : arguments[0].data[1][1],
'PayerAccountName' : arguments[0].data[1][8],
'TotalAmount' : totAmt
};
payerAccArr.push(payerObj);
$('#loading1').removeClass('show').addClass('hide');
$('#content-Container').removeClass('hide').addClass('show');
},
error: errorFn
});
}
// for(var i=0;i<knownFiles.length;i++){
// }
}
}, onError);
}, onError );
}, onRequestError);
如何获取要解析的文件?我错过了什么?我得到的错误是
TypeError: Unable to get reference for 1
我正在使用 Papa.parse 进行解析。
我能够使用 getFile
和 fileEntry.file
方法解决这个问题。代码编辑如下:
var knownFiles=[];
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
function(fs){
fs.root.getDirectory('Amazedata', null,
function(d){
var dirReader = d.createReader();
dirReader.readEntries(function(entries){
if (!entries.length) {
alert('FileSystem is Empty');
}
else{
var dirLength = entries.length;
for(var i=0; i<entries.length;i++){
knownFiles.push(entries[i].name);
var reqfile = entries[i].fullPath;
d.getFile(reqfile,{},
function(fileEntry){
fileEntry.file(function(file){
Papa.parse(file,{
header: true,
dynamicTyping: true,
complete: function(){
//console.log(arguments);
var parserObj = arguments[0];
var totAmt =0;
for(var j=0; j<parserObj.data.length; j++){
if(!parserObj.data[j].LinkedAccountId){
totAmt += parserObj.data[j].TotalCost ? parseInt(parserObj.data[j].TotalCost) : 0;
}
}
console.log('total amount', totAmt);
var payerObj={
'PayerAccountID' : parserObj.data[0].PayerAccountId,
'PayerAccountName' : parserObj.data[0].PayerAccountName,
'TotalAmount' : totAmt
};
console.log('payerObj',payerObj);
payerAccArr.push(payerObj);
if(payerAccArr.length == dirLength)
break;
},
error: errorFn
});
});
});
//console.log(file);
}
fileEntry.file
returns 一个可用于解析的文件对象。