2017-05-01 11 views
1

アプリケーションのすべてのタイプのファイルをアップロードする必要があります。画像の高さと幅を取得する必要があります。コードタイプのMediaType.ALLMEDIAから "file:/// storage"パスを取得する

$scope.uploadFile = function(){ 
     $scope.imageUploading = true; 
     var options = { 
      quality: 70, 
      //~ targetWidth: 1005, 
      //~ targetHeight: 693, 
      destinationType: Camera.DestinationType.FILE_URI, 
      sourceType: Camera.PictureSourceType.PHOTOLIBRARY, 
      mediaType: Camera.MediaType.PICTURE, 
      correctOrientation: true 
     }; 
     $cordovaCamera.getPicture(options).then(function(imageData) { 
     imageData = imageData.split('?'); 
     var imageURI = imageData[0]; 
     // This function is called once an imageURI is rerturned from PhoneGap's camera or gallery function 
     window.resolveLocalFileSystemURL(imageURI, function(fileEntry) { 
      fileEntry.file(function(fileObject){ 
       // Create a reader to read the file 
       var reader = new FileReader(); 
       // Create a function to process the file once it's read 
       reader.onloadend = function(evt) { 
        // Create an image element that we will load the data into 
        var image = new Image() 
        image.onload = function(evt) { 
         // The image has been loaded and the data is ready 
         var image_width = this.width 
         var image_height = this.height 
         if(parseInt(image_width) < confArr.image_sizes.portfolio.large.w || parseInt(image_height) < confArr.image_sizes.portfolio.large.h){ 
          Auth.toastMessage($rootScope.appMainLang.formvalidation.upload_resolution_limit.replace('%s',parseInt(confArr.image_sizes.portfolio.large.w)),'long','center'); 
          $scope.imageUploading = false; 
          $ionicLoading.hide(); 
         }else{ 
          $scope.imageUploading = true; 
          $scope.jrCrop(imageURI); 
         } 
         image = null 
        } 
        // Load the read data into the image source. It's base64 data 
        image.src = evt.target.result 
       } 
       // Read from disk the data as base64 
       reader.readAsDataURL(fileObject) 
      }, function(){ 
       Auth.toastMessage("There was an error reading or processing this file.","long", "center"); 
      }) 
     }) 


     }, function(err) { 
      $scope.imageUploading = false; 
      $ionicLoading.hide(); 
     // Auth.toastMessage(Auth.getlocal("timeoutText","string"),"long", "center"); 
     }); 
    } 

Iは MEDIATYPE使用する場合:上記のコードでCamera.MediaType.PICTURE、

それは、ファイルのパスを返す "ファイル:///ストレージ/ .../0 /エミュレート" し、働いています正しく 私は

mediaType: Camera.MediaType.ALLMEDIA 

で、ファイルのこのパスに行の上に置き換えて、私はすべての種類のファイルをアップロードする必要があるとすると、「/ストレージ/ ...// 0をエミュレート」になり、それが中に入っていません"window.resolveLocalFileSystemURL"関数。 この後のパスを上記のようなパスに変換する方法はありますか?

答えて

1

file://を文字列に追加するだけです。このように:

var imageURI = 'file://' + imageData[0]; 
+0

これは、「mediaType:Camera.MediaType.ALLMEDIA」 - /storage/emulated/0/download/unnamed.pngを使用して取得しているパスです。 "mediaType:Camera.MediaType.PICTURE"のパスは-file ///storage/emulated/0/android/data/com.myapp/cache/unnamed.png – user1578460

+0

ですので、Camera.MediaType.ALLMEDIAを使用すると、myパスにfile://を追加します。 –

+0

これらの2つのパスは異なりますが、file://を追加すると動作しません。ファイルパスに注意してください。 – user1578460

関連する問題