Cordova使用文件URL移动文件

Scr*_*ch. 4 javascript cordova html5-filesystem

如何使用从相机获取的URL移动文件?

函数moveTo既不调用successCallback也不调用errorCallback.任何人都可以告诉我我做错了什么以及可能的解决方案是什么样的?

function successCallback(entry) {
    console.log("New Path: " + entry.fullPath);
    alert("Success. New Path: " + entry.fullPath);
}

function errorCallback(error) {
    console.log("Error:" + error.code)
    alert(error.code);
}

// fileUri = file:///emu/0/android/cache/something.jpg
function moveFile(fileUri) {
    newFileUri  = cordova.file.dataDirectory + "images/";
    oldFileUri  = fileUri;
    fileExt     = "." + oldFileUri.split('.').pop();

    newFileName = guid("car") + fileExt;

    // move the file to a new directory and rename it
    fileUri.moveTo(cordova.file.dataDirectory, newFileName, successCallback, errorCallback);
}
Run Code Online (Sandbox Code Playgroud)

我使用的是Cordova 4.1.2版还安装了Cordova File Plugin

Qui*_*Fix 13

你试图在String上调用函数moveTo.

moveTO不是String的函数,而是fileEntry的函数.所以你需要做的第一件事就是从你的URI中获取一个fileEntry.

为此,你将调用window.resolveLocalFileSystemURL:

function moveFile(fileUri) {
    window.resolveLocalFileSystemURL(
          fileUri,
          function(fileEntry){
                newFileUri  = cordova.file.dataDirectory + "images/";
                oldFileUri  = fileUri;
                fileExt     = "." + oldFileUri.split('.').pop();

                newFileName = guid("car") + fileExt;
                window.resolveLocalFileSystemURL(newFileUri,
                        function(dirEntry) {
                            // move the file to a new directory and rename it
                            fileEntry.moveTo(dirEntry, newFileName, successCallback, errorCallback);
                        },
                        errorCallback);
          },
          errorCallback);
}
Run Code Online (Sandbox Code Playgroud)