【问题标题】:Cordova: Uncaught ReferenceError: FileTransfer is not definedCordova:未捕获的 ReferenceError:未定义 FileTransfer
【发布时间】:2016-04-08 00:41:51
【问题描述】:

我想从服务器下载 PDF 文件并将其保存到该设备的本地存储中。 为此,我找到了cordova-plugin-file-transfer

运行那段代码:

var fileTransfer = new FileTransfer();
var uri = encodeURI("http://example.com/file.pdf");
var fileURL = "/Martin/Downloads/";

function openDocument() {
   fileTransfer.download(
    uri,
    fileURL,
    function(entry) {
        console.log("download complete: " + entry.toURL());
    },
    function(error) {
        console.log("download error source " + error.source);
        console.log("download error target " + error.target);
        console.log("upload error code" + error.code);
    },
    false,
    {
        headers: {
            "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
        }
    }
);
}

给了我这个问题:

Uncaught ReferenceError: FileTransfer 未定义

我已经删除了所有平台并重新安装了它们。 之后,我删除了所有插件并重新安装了它们。

类似的thread 帮不了我。

我还能做什么?

【问题讨论】:

  • 你安装插件了吗?您是否在 index.html 中包含了cordova.js?在尝试使用插件之前,您是否正在等待设备就绪事件?
  • 您确定在 deviceReady 被触发后访问插件吗?
  • 我使用以下命令安装了插件:cordova plugin add cordova-plugin-file。这样做之后,我做了:cordova plugin add cordova-plugin-file-transfer。命令 cordova plugin 表示插件已安装。 Cordova 也包含在标题中。如何在 ready 事件之前检查插件是否被使用?
  • 这可能是您如何测试它的问题?您是在模拟器、浏览器中运行它,还是在构建和部署到设备等?
  • 我给出的代码在 onClick()-Function 中。所以当我点击按钮时就可以运行它。为此,设备必须准备就绪。还是我错过了什么?

标签: javascript jquery cordova file-transfer


【解决方案1】:

不是函数,而是变量的 init 在调用 device-ready 之前运行。

这是对我有用的代码:

document.addEventListener("deviceready", onDeviceReady, false);

var fileTransfer;
var uri;
var fileURL;

// use file transfer after onDeviceReady() was called         
function onDeviceReady() {
    fileTransfer = new FileTransfer();
    uri = encodeURI('http://example.com/file.pdf');
    fileURL = '/file.pdf';
}

function openDocument() {

   fileTransfer.download(
    uri,
    fileURL,
    function(entry) {
        alert("download complete: " + entry.toURL());
        console.log("download complete: " + entry.toURL());
    },
    function(error) {
        console.log("download error source " + error.source);
        console.log("download error target " + error.target);
        console.log("upload error code" + error.code);
        alert("download error source " + error.source);
    },
    false
);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-23
    • 2023-01-23
    • 2016-11-03
    • 2011-01-05
    • 2016-01-02
    • 2013-10-06
    • 2016-12-17
    相关资源
    最近更新 更多