Cordova 3.4.0:从GALLERY中选择时,Camera.getPicture()返回编码的URI

Bid*_*dya 4 android cordova

我正在使用Camera.getPicture()API来捕获图像或从GALLERY中选择图像.当我使用相机拍摄照片时,它会返回FileEntry,其中包含带有文件名和扩展名的正确URL.但是当我从Gallery中选择一个文件时,它会将"FileEntry.fullPath"返回为/com.android.providers.media.documents/document/image%3A322,有时还会返回/ media/external/images/media/319

我想要的是,我想验证支持的文件类型(即jpg/jpeg)和实际文件名.

有没有办法获得带有扩展名的文件名,该文件名已被选中.

提前致谢.

代码片段:

        var data = {};
        if( type === CAMERA){
            data = {
                        quality: quality,
                        destinationType: FILE_URI,
                        encodingType: JPEG, targetWidth: 1200, targetHeight: 1200,
                        saveToPhotoAlbum: true
                    };
        }
        else
        {
            data = {
                        destinationType: FILE_URI,
                        sourceType: PHOTOLIBRARY,
                        mediaType: ALLMEDIA

                    };
        }


        navigator.camera.getPicture(
                successCallback, errorCallback, data
        );   

      //The success callback method is : 
       successCallback: function(imageURI, param)
       {
                 //HERE THE imageURI value is coming with different format if selected from GALLERY
                 window.resolveLocalFileSystemURI(imageURI, 
            function(fileEntry) {fileEntry.file(onSuccess,onError);},
                            function(evt) {onError.call(this,evt.target.error);} );

       }
Run Code Online (Sandbox Code Playgroud)

小智 6

我能够使用此插件从"content://"URI转换为"file://"URI:https://www.npmjs.com/package/cordova-plugin-filepath.

获得"file://"URI后,我就可以使用Cordova的resolveLocalFileSystemURL()函数了.

希望这可以帮助.

if (fileUri.startsWith("content://")) {
    //We have a native file path (usually returned when a user gets a file from their Android gallery)
    //Let's convert to a fileUri that we can consume properly
    window.FilePath.resolveNativePath(fileUri, function(localFileUri) {
        window.resolveLocalFileSystemURL("file://" + localFileUri, function(fileEntry) {/*Do Something*/});
    });
}
Run Code Online (Sandbox Code Playgroud)