我正在使用 Camera.getPicture() API 来捕获图像或从图库中选择图像。 当我使用相机拍照时,它会返回具有正确 URL 的 FileEntry 以及文件名和扩展名。但是当我从图库中选择一个文件时,它返回“FileEntry.fullPath”作为/com.android.providers.media.documents/document/image%3A322 有时/media/external/images/media/319
我想要的是,我想验证支持的文件类型(即 jpg/jpeg)和实际文件名。
有没有办法获取选中的带扩展名的文件名。
提前致谢。
代码 fragment :
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);} );
}
最佳答案
我能够使用此插件将“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*/});
});
}
关于android - Cordova 3.4.0 : Camera. getPicture() 从 GALLERY 中选择时返回编码的 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22814849/