2013-05-15 48 views
2

我想更新从手机拍摄的图片到Parse,我们正在为这个简单的功能而烦恼,因为我们无法使用Phonegap将ImageUri转换为真实的文件(为了将其上传到我们的解析服务器),我们使用Ripple来模拟手机行为。获取ImageUri的文件内容

我们有这段代码尝试:

var reader = new FileReader(); 


reader.onloadend = function(evt) { 

console.log("read success"); 
console.log(evt.target.result); 
evt.target.result; 
}; 
reader.readAsText(user.myPicture); 

,但我得到这个错误:TypeError: Object #<Console> has no method 'warning'

好像PhoneGap的的的FileReader不喜欢URI的那种,我从navigator.camera得到.getPicture()

$scope.getPicture = function(){ 

      navigator.camera.getPicture(onSuccess, onFail, 
       //Options => http://docs.phonegap.com/en/2.6.0/cordova_camera_camera.md.html#Camera 
       { quality: 50, 
        destinationType:Camera.DestinationType.FILE_URI, 
        encodingType: Camera.EncodingType.JPEG, 
        sourceType : Camera.PictureSourceType.PHOTOLIBRARY ,//CAMERA, 
        targetWidth: 100, 
        targetHeight: 100 
       }); 
      function onSuccess(imageURI) { 
       var image = document.getElementById('preview'); 
       image.src = imageURI; 
       $scope.myPicture = image.src; 

//    $scope.$apply(function() { 
//     ctrl.$setViewValue(image.src); 
//    }); 
      } 

      function onFail(message) { 
       alert('Failed because: ' + message); 
       ctrl.$setValidity('Failed because: ' + message, false); 
      } 

     }; 

是否有任何其他方式来获取文件,而不使用JQuery $ .get()?

有一个类似的帖子here有同样的问题

回答

3

我想你会明白的同样的答案我得到你的联系我的问题。

with the info in this post。 。非常感谢Raymond Camden!

function gotPic(data) { 

window.resolveLocalFileSystemURI(data, function(entry) { 

var reader = new FileReader(); 

reader.onloadend = function(evt) { 
    var byteArray = new Uint8Array(evt.target.result); 
    var output = new Array(byteArray.length); 
    var i = 0; 
    var n = output.length; 
    while(i < n) { 
     output[i] = byteArray[i]; 
     i++; 
    }     
    var parseFile = new Parse.File("mypic.jpg", output); 

    parseFile.save().then(function(ob) { 
      navigator.notification.alert("Got it!", null); 
      console.log(JSON.stringify(ob)); 
     }, function(error) { 
      console.log("Error"); 
      console.log(error); 
     }); 

} 

reader.onerror = function(evt) { 
     console.log('read error'); 
     console.log(JSON.stringify(evt)); 
    } 

entry.file(function(s) { 
    reader.readAsArrayBuffer(s); 
}, function(e) { 
    console.log('ee'); 
}); 

}); 
} 
0

我不知道理解。您想要保存图片,还是只显示图片或其他内容?

  • 为了保存图片,有人写了一个插件。你可以在这里找到它:base64ToPNG

  • 要显示的图片:

    image.src = “数据:图像/ JPEG; BASE64,” + imageURI