【发布时间】:2015-12-16 15:40:04
【问题描述】:
所以我设法使用自定义指令通过 Angular.js 将图像上传到我的服务器。我还设法从 Cordova 实现了相机功能。现在我想将图像发送到服务器
我的控制器:
$scope.getPhoto = function() {
console.log("foncton of picture");
navigator.camera.getPicture(onSuccess, onFail, { quality: 75, targetWidth: 320,
targetHeight: 320, destinationType: 0 });
//destination type was a base64 encoding
function onSuccess(imageData) {
console.log("success");
//preview image on img tag
$('#image-preview').attr('src', "data:image/jpeg;base64,"+imageData);
console.log("success imageData");
console.log(imageData);
//setting scope.lastPhoto
$scope.lastPhoto = dataURItoBlob("data:image/jpeg;base64,"+imageData);
//$localStorage.lastPhoto=dataURItoBlob("data:image/jpeg;base64,"+imageData);
console.log("$localStorage.lastPhoto");
console.log(imageData);
}
function onFail(message) {
alert('Failed because: ' + message);
}
}
function dataURItoBlob(dataURI) {
// convert base64/URLEncoded data component to raw binary data held in a string
var byteString = atob(dataURI.split(',')[1]);
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++)
{
ia[i] = byteString.charCodeAt(i);
}
var bb = new Blob([ab], { "type": mimeString });
return bb;
}
var objInsc = new Object();
objInsc.imageJson=$scope.lastPhoto;
$http.post('http://@ip:8080/elodieService/evenements/',objInsc).success(function(response, status, headers, config){
alert("SUCCESS ajout dans la table evenement!!");
});
我发现 imageJson 为空
我该怎么办,请帮帮我:(
【问题讨论】:
-
为什么要将base64转成原始二进制,base64在与服务器通信时更好。
-
如何改正??
标签: angularjs json image cordova ionic-framework