danywarner danywarner - 6 months ago 17
Ajax Question

Upload a photo to web service with phonegap

OK, So I am able to take a picture with the phone's camera and view it inside an img, now I want to upload it through a web service that receives a

<File> base64Binary </File>.


This is how I set the image:

function onPhotoDataSuccess(imageData)
{
var smallImage = document.getElementById('smallImage');
smallImage.style.display = 'block';
smallImage.src = "data:image/jpeg;base64," + imageData;
}


And this is how I try to send it:

var ima=document.getElementById("smallImage").src;

var soapRequest ='<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'+
'<soap:Body>'+
'<InsertFileInfo xmlns="http://tempuri.org/">'+

'<File>'+ima+'</File>'+
'<FileName>sldkq.jpg</FileName>'+
'<Description>Photo</Description>'+
'<Code>'+CodeFile+'</Code>'+

'</InsertFileInfo>'+
'</soap:Body>'+
'</soap:Envelope>';

$.ajax({
type: "POST",
url: wsUrl,
contentType: "text/xml",
dataType: "xml",
data: soapRequest,
success: processSuccess,
error: processError
});


function processSuccess(data, status, req)
{

if (status == "success")
{
alert("sent");
}

}

function processError(data, status, req)
{
alert('error'+data.state);
//alert(req.responseText + " " + status);
}


Then some minutes pass and I finally get the processError function message.

Can someone tell me what is wrong with this?

Answer

I got to solve it. If anyone has this issue: the variable 'ima' was requesting for the .src of an img but that didn't work. So I used something else to store the base64 value of the picture:

window.localStorage.setItem("CodePhoto", imageData);

And I read it inside the request like this:

var codePhoto = window.localStorage.getItem("CodigoFoto");

And Finally put it inside the

 <File></File> 

like this:

 ...'<File>'+codePhoto+'</File>'+...
Comments