Javascript Cordova FileReader在特定情况下不读取文件
我正在科尔多瓦建立一个Android应用程序,它使用谷歌MyMaps的数据。所以,我试图直接从google下载kml文件进行解析。如果设备上不存在该文件,下载工作正常,但一旦该文件存在,文件阅读器就会拒绝工作 这是我的密码:Javascript Cordova FileReader在特定情况下不读取文件,javascript,android,cordova,filereader,Javascript,Android,Cordova,Filereader,我正在科尔多瓦建立一个Android应用程序,它使用谷歌MyMaps的数据。所以,我试图直接从google下载kml文件进行解析。如果设备上不存在该文件,下载工作正常,但一旦该文件存在,文件阅读器就会拒绝工作 这是我的密码: let transfer = new FileTransfer() let uri = encodeURI(`https://www.google.com/maps/d/kml?mid=${mapId}&forcekml=1`) let fileUrl = 'cdv
let transfer = new FileTransfer()
let uri = encodeURI(`https://www.google.com/maps/d/kml?mid=${mapId}&forcekml=1`)
let fileUrl = 'cdvfile://localhost/persistent/mapdata.kml'
transfer.download(uri, fileUrl, (entry) => {
let url = entry.toURL()
let path = entry.fullPath
console.log('cart: complete!, '+url+", "+path)
entry.file((file) => {
console.log('cart: reading map file')
let reader = new FileReader()
reader.onload = (evt) => {
console.log("cart: finished reading file")
setTimeout(() => parseMapData(evt.target.result), 750)
}
reader.onloadend = reader.onload // failsafe
reader.readAsText(file)
}, (err) => {
alert('file read err')
})
}, (error) => {
alert('error!')
}, true, {
headers: {
'Access-Control-Allow-Origin': '*'
}
})
如果文件存在,似乎不会调用filereader的onload和onloadend。因此,我必须在再次下载之前删除该文件,无论它是永久存储还是临时存储。我希望能够缓存多个应用程序加载的数据,并重新读取,而不是重新下载
如果我只是在没有下载的情况下读取现有文件,有时我可以加载它,但它似乎不一致
这到底是怎么回事
更新:即使我删除文件并重新下载,它也基本不起作用。无论出于什么原因,它偶尔也会起作用。所以一般来说,我在Android上不使用FileReader
readAsText
未被调用或onload
/onloadend
未被调用(我已尝试单独使用每一个)。对此我能做些什么吗?“文件阅读器拒绝工作”你说的“拒绝工作”是什么意思?好吧,似乎没有调用onload和onloadend,因为我没有得到我在那里记录的内容,也没有调用parseMapData。但是,下载本身工作正常,或者至少调用其成功回调。请尝试仅使用load
或loadend
或尝试单独使用每种方法。我得到了同样的结果。“FileReader拒绝工作”你说的“拒绝工作”是什么意思?嗯,似乎没有调用onload和onloadend,因为我没有得到我在那里记录的内容,也没有调用parseMapData。但是,下载本身工作正常,或者至少调用其成功回调。请尝试仅使用load
或loadend
或尝试单独使用每种方法。我得到了同样的结果。