0

I have a select tag which has 3 options, powerpoint,pdf and spreadsheet and I am uploading it from google drive which is not validated, that means if I give ppt link to pdf option it is uploading. Please help me to validate it.

My code is

<div class="row widget-row" ng-if="mediaData.mediaType == 14">
     <div class="form-group">
         <label>Document Type*</label> 
         <select class="form-control" ng-model="mediaData.googleDocType" required>
              <option value="0" >Powerpoint</option>
              <option value="2" id="spreadsheet">Spreadsheet</option>
              <option value="3">PDF</option>
         </select>
     </div>
</div>

<div class="row widget-row" ng-if="mediaData.mediaType == 14">
     <div class="form-group">
           <label>Link *</label> 
           <input type="text" class="form-control" ng-model="mediaData.docLink" required>
     </div>
</div>

And AngularJs code is

case '14' : $scope.googleDocumentObject = new GoogleDocumentObject();
                if(mediaData.googleDocType == 0){
                    $scope.googleDocumentObject.source = mediaData.docLink;
                    $scope.googleDocumentObject.attributes.documentType = 0;
                    $scope.updateProgram("googlePPT",$scope.googleDocumentObject,1,$scope.cssObject);
                }
                else if(mediaData.googleDocType == 1){

                    $scope.googleDocumentObject.source = mediaData.docLink;
                    $scope.googleDocumentObject.attributes.documentType = 1;
                    $scope.updateProgram("googleDocument",$scope.googleDocumentObject,1,$scope.cssObject);
                }
                else{
                    $scope.googleDocumentObject.source = mediaData.docLink;
                    console.log($scope.googleDocumentObject.source);
                    $scope.googleDocumentObject.attributes.documentType = 2;
                    $scope.updateProgram("googleDocument",$scope.googleDocumentObject,1,$scope.cssObject);
                }
                break;
Ash
  • 149
  • 1
  • 1
  • 13

1 Answers1

0

Get the file extension from the link with mediaData.link.split('.').pop(); or using regex in a custom function. This function returns a boolean flag to check its validity with the mediaData.googleDocType enum.

case '14':
  $scope.googleDocumentObject = new GoogleDocumentObject();
  var isValid = CheckIfValidFile(mediaData);
  if (isValid) {
    //Upload accordingly
  }
  break;

function CheckIfValidFile(mediaData) {
    var ext = mediaData.link.split('.').pop();
    //Or using below regex
    var re = /(?:\.([^.]+))?$/;
    var ext = re.exec(mediaData.link)[1];

    if ((ext === 'ppt' || ext === 'pptx') && mediaData.googleDocType == 0) {
      return true;
    } else((ext === 'doc' || ext === 'docx') && mediaData.googleDocType == 1) {
      return true;
    } else(ext === 'pdf' && mediaData.googleDocType == 2) {
      return true;
    }
    return false;
}
Sajal
  • 4,359
  • 1
  • 19
  • 39
  • Hi Sajal Thank you for the update.. but every link does not provide extension. for example this is the link of a spreadsheet. `https://docs.google.com/spreadsheets/d/1yMh4nUWxHbDYubBMzk5zaNpmYmUtHi4geJD97h3qS0c/edit#gid=0`. How to resolve these issues? – Ash Oct 31 '17 at 07:06