Phonegap 3.3.0 iOS FileSystem插件未触发完成,进度或错误

时间:2014-02-14 19:05:17

标签: 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 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);
}

关于我可能做错什么的任何想法?

2 个答案:

答案 0 :(得分:1)

我认为你的回调被触发但是你有语法错误,因为你试图使用arguments参数但是没有定义它。

此外,由于回调采用对象,使用console.log中的参数,它只会显示“对象”。您应该对其进行字符串化或使用对象的属性。

例如:

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");
}

答案 1 :(得分:1)

Phonegap 3.3.0的Filesystem有一种新方法。如果您一直使用fullpath进行输入,则需要将其替换为toURL()。

同样在您的config.xml文件中,您必须添加

<preference name="iosPersistentFileLocation" value="Compatibility" />

您最好的选择是查看此链接https://github.com/apache/cordova-plugin-file/blob/dev/doc/index.md

让这些改变对我有用。希望它也适合你。