Cordova WP8 resolveLocalFileSystemURL失败

时间:2014-09-29 12:08:43

标签: javascript windows-phone-8 plugins cordova-3

美好的一天,我在cordova上有一个使用图库和相机的项目,并将图像存储在本地缓存文件夹中。 所以我安装了:

org.apache.cordova.camera 0.3.1 "Camera"
org.apache.cordova.file 1.3.1 "File"
org.apache.cordova.file-transfer 0.4.6 "File Transfer"

Android和iOS运行完美,但谈到WP8(Windows Phone 8),代码如下:

$scope.uploadImageFromPhone = function(isCamera){
        console.log('uploadImageFromPhone');

        var opt = {
            quality: 50,
            destinationType: Camera.DestinationType.FILE_URI,
            sourceType: (isCamera) ? Camera.PictureSourceType.CAMERA : Camera.PictureSourceType.PHOTOLIBRARY,
            encodingType: Camera.EncodingType.JPEG
        };

        function onGetImageSuccess(fileUrl) {
            console.log('onGetImageSuccess:\n'+fileUrl);
            window.resolveLocalFileSystemURL(fileUrl, resolveSuccess, resolveFails);
        }

        function onGetImageFail(message) {
            //console.log('onGetImageFailed:\n' + JSON.stringify(message));
        }

        function resolveSuccess (path) {
            console.log('resolveSuccess:');
            console.log(JSON.stringify(path));
            uri = path.nativeURL;

            //wp8 returns null as path.nativeURL
            /*IE10 specific hack*/
            if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
                uri = path.fullPath;
            }
        }

        function resolveFails(err){
            console.log('resolveFails:\n' + JSON.stringify(err));
        };

        navigator.camera.getPicture(onGetImageSuccess, onGetImageFail, opt); 
}

resolveSuccess函数总是返回路径变量,如下所示:

{"isFile":true,"isDirectory":false,"name":"wp_ss_20140923_0001.png","fullPath":"///CapturedImagesCache/wp_ss_20140923_0001.png","filesystem":"<FileSystem: temporary>","nativeURL":null}

问题是nativeURL为null。

根据我的应用程序,所选文件必须放在应用程序本地缓存中,所以我尝试下载并通过使用文件传输插件接近fullPath来存储在缓存中:

var fileTransfer = new FileTransfer();
fileTransfer.download(
    uri, // equals to '///CapturedImagesCache/wp_ss_20140923_0001.png'
    'wp_ss_20140923_0001.png',
    function(entry){
        //file processing
        console.log('downloaded successfull');

    },
    function(error){
        console.log("download error" + JSON.stringify(error));
    },
    false,
    {}
);

此代码始终返回控制台输出:

download error: {"code":2,"source":"///CapturedImagesCache/wp_ss_20140923_0001.png","target":null,"http_status":null,"body":null,"exception":null}

我不明白,我在这里做错了什么? P.S:cordova版本:'3.6.3-0.2.13'

0 个答案:

没有答案