2014-11-03 96 views
0

我有一個獲取照片並獲取FILE_URI的函數。其工作原理:Phonegap使用Ajax發送圖像會導致[Object ArrayBuffer]而不是二進制

navigator.camera.getPicture(function (data) { 

    if (data === false) { 
     // Error, or cancel 
    } else { 
     var fio = new FileIO(); 
     fio.getFile(data, function(result){ 
      _this.photo = result; 
     }, function(){ }); 
     _this.templateManager.holder.find("#profielFoto").css("background-image", "url(" + data + ")").addClass("picture"); 
    } 

}, function(){ 
}, { 
    sourceType: navigator.camera.PictureSourceType.CAMERA, 
    quality: 100, 
    destinationType: navigator.camera.DestinationType.FILE_URI, 
    allowEdit: true, 
    correctOrientation: true, 
    targetWidth : 200, 
    targetHeight: 200 
}); 

現在旁邊,結果我從fio.getFile得到的結果是:

FileIO.prototype.getFile = function(filename, cb, error){ 
    window.resolveLocalFileSystemURI(filename, function(fileEntry) { 
     fileEntry.file(function(file) { 
      var reader = new FileReader(); 
      reader.onloadend = function(evt) { 
       cb(evt.target.result); 
      }; 
      //reader.onerror = error; 
      reader.readAsArrayBuffer(file); 
     }, error); 
    }, error); 
}; 

所以_this.photo是ArrayBuffer。現在我不想發送這個ajax帖子。這是可能的,但我不能得到它的工作。數據庫中的數據是[Object ArrayBuffer],但我沒有做任何事情。

var data = new FormData(); 
data.append("photo", this.photo); 
data.append("firstname", $("input[name=firstname]").val()); 
data.append("insertion", $("input[name=insertion]").val()); 
data.append("lastname", $("input[name=lastname]").val()); 
data.append("emailaddress", $("input[name=emailaddress]").val()); 
data.append("passwordhash", $("input[name=passwordhash]").val()); 

var xhr = new XMLHttpRequest(); 
xhr.open('POST', PostURL, true); 
xhr.onload = function(oEvent) { 
    if (xhr.status == 200) { 
     alert("OK"); 
    } else { 
     alert("ERROR"); 
    } 
    }; 
xhr.send(data); 

問:怎麼可能這個職位[對象ArrayBuffer],而不是我的二進制數據?

回答

相關問題