Thursday, March 19, 2015

Reading uri and dataurl of file in phonegap using camera and filereader api of phonegap

function addMedia(callBcGetSelImg, uploadName, mediaSelType){
        var cameroOpts={
                quality : 75,
                destinationType : navigator.camera.DestinationType.FILE_URI,
                sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY
        };
       
        /**
         * validates media selected by user
         * @param file : a file object returned by phonegap holding file attributes of file to be read
         */
        var validateMedia = function(file){
            var acceptableMimeTypes = [];
            switch(mediaSelType){
                case 'image':
                    acceptableMimeTypes = ['image/jpeg', 'image/gif', 'image/png'];
                    break;
                case 'video' :
                    acceptableMimeTypes = ['video/mp4'];
                    break;
                default:
                    alert('Debug: Method called with wrong mediaSelType =' + mediaSelType);
                    return false;
            }

            errorMsgs='';
           
            isValidMime = false;
            for(var i in acceptableMimeTypes){
                if (acceptableMimeTypes.hasOwnProperty(i)) {
                    if( acceptableMimeTypes[i] == file.type){
                        isValidMime = true;
                        break;
                    }
                }
            }
           
            if(!isValidMime){
                errorMsgs += 'Please select valid media\n';
            }
           
            //verify file size is less than 1024KB
            if(file.size > 1048576){
                errorMsgs += 'Please select file with size less than 1024KB';
            }
           
            if(errorMsgs != ''){
                alert(errorMsgs);
                return false;
            }
           
            return true;
        }
       
        function selMedia(mediaURI) {
              window.resolveLocalFileSystemURI(mediaURI, function(fileEntry) {
                  fen = JSON.stringify(fileEntry);
                  fileEntry.file(function(file){
                      validateMedia(file);
                      alert('file Obj:'+JSON.stringify(file));
                      var reader = new FileReader();
                      reader.onloadend = function(evt) {
                          alert("Read as data URL");
                          mediaDataURL = evt.target.result;
                          callBcGetSelImg(mediaDataURL);
                          media.push({
                              data : mediaDataURL,
                              uploadName : uploadName,
                          });
                         
                          alert('media array contain:' + media.length);
                      };
                      reader.readAsDataURL(file);
                  },function() {
                      alert('error');
                  });
                  //Plugin.callNativeFunction(nativePluginResultHandler, nativePluginErrorHandler, 'success', fileEntry.fullPath);
              }, function(error){
                  alert('error');
              });     
        }
  
        navigator.camera.getPicture(selMedia, function(err){
            alert('error occured in selecting media');
        }, cameroOpts);
    };

No comments:

Post a Comment