Javascript Phonegap 3.3.0 iOS文件系统插件未触发完成、进度或错误
我正在尝试在Phonegap 3.3.0的iOS上使用FileTransfer插件。它过去一直在我的应用程序中工作,但自从我更新了所有库JQuery(1.11.0)、JQuery Mobile(1.4.1)之后,我没有收到任何与文件传输相关的回调 我知道这些文件正在下载,因为我可以看到它们出现在iOS模拟器临时文件等的文件系统中。此外,它们似乎已经完成下载,因为这些文件看起来是完整的 我的代码:Javascript Phonegap 3.3.0 iOS文件系统插件未触发完成、进度或错误,javascript,jquery,ios,cordova,phonegap-plugins,Javascript,Jquery,Ios,Cordova,Phonegap Plugins,我正在尝试在Phonegap 3.3.0的iOS上使用FileTransfer插件。它过去一直在我的应用程序中工作,但自从我更新了所有库JQuery(1.11.0)、JQuery Mobile(1.4.1)之后,我没有收到任何与文件传输相关的回调 我知道这些文件正在下载,因为我可以看到它们出现在iOS模拟器临时文件等的文件系统中。此外,它们似乎已经完成下载,因为这些文件看起来是完整的 我的代码: function download(url, dest, cb) { var fileTr
function download(url, dest, cb) {
var fileTransfer = new FileTransfer();
console.log("remote:"+url+" local:"+dest);
fileTransfer.onprogress = progress;
fileTransfer.download(url, dest, downloadSuccess, fail);
}
function progress() {
console.log("progress:"+arguments);
}
function fail() {
console.log("fail:"+arguments);
}
function downloadSuccess() {
console.log("download complete: " + arguments);
}
有没有想过我可能做错了什么?我想你的回调被触发了,但是你有语法错误,因为你试图使用
参数,但没有定义它
此外,当回调使用console.log中的参数获取对象时,它将只显示“object”。您应该将其字符串化或使用对象的属性
例如:
function download(url, dest, cb) {
var fileTransfer = new FileTransfer();
console.log("remote:"+url+" local:"+dest);
fileTransfer.onprogress = progress;
fileTransfer.download(url, dest, downloadSuccess, fail);
}
function progress(arguments) {
console.log("progress:"+Math.floor(100*arguments.loaded/arguments.total)+"%");
}
function fail(arguments) {
console.log("fail error code:"+arguments.code);
}
function downloadSuccess(arguments) {
console.log("download complete: " + arguments.bytesSent + " bytes sent");
}
Phonegap 3.3.0的文件系统采用了一种新的方法。如果您一直在使用fullpath进行输入,则需要将其替换为toURL()
您还需要在config.xml文件中添加
<preference name="iosPersistentFileLocation" value="Compatibility" />
你最好的办法就是浏览这个链接
做这些改变对我来说很有用。希望它也适用于您。在每个JavaScript函数中,您都可以访问参数
数组,该数组包含(您使用它)被调用函数接收的参数。所以这不是问题所在。Apache的bug跟踪系统()中也注册了相同的bug。所以这确实是Phonegap/Cordova文件传输插件中的一个bug。我只是不知道是否已经有了解决方案,或者我们是否只能使用问题中解释的解决方法。