want to upload a pic to the server using phonegap in android want to upload a pic to the server using phonegap in android android android

want to upload a pic to the server using phonegap in android


You solve your problem using the next code:

<script type="text/javascript">  function uploadFromGallery() {    // Retrieve image file location from specified source    navigator.camera.getPicture(uploadPhoto,                                function(message) { alert('get picture failed'); },                                { quality: 50,                                 destinationType: navigator.camera.DestinationType.FILE_URI,                                sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY }                                );}function uploadPhoto(imageURI) {    var options = new FileUploadOptions();    options.fileKey="file";    options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1)+'.png';    options.mimeType="text/plain";    var params = new Object();    options.params = params;    var ft = new FileTransfer();    ft.upload(imageURI, encodeURI("http://some.server.com/upload.php"), win, fail, options);}function win(r) {    console.log("Code = " + r.responseCode);    console.log("Response = " + r.response);    console.log("Sent = " + r.bytesSent);}function fail(error) {    alert("An error has occurred: Code = " + error.code);    console.log("upload error source " + error.source);    console.log("upload error target " + error.target);}</script></head><body>   <a data-role="button" onClick="uploadFromGallery();">Upload from Gallery</a> </body>

See more info on this post:https://stackoverflow.com/a/13862151/1853864


Try the following code.

// A button will call this function// To capture photofunction capturePhoto() {    // Take picture using device camera and retrieve image as base64-encoded string    navigator.camera.getPicture(uploadPhoto, onFail, {         quality: 50, destinationType: Camera.DestinationType.FILE_URI     });}// A button will call this function// To select image from galleryfunction getPhoto(source) {    // Retrieve image file location from specified source    navigator.camera.getPicture(uploadPhoto, onFail, { quality: 50,        destinationType: navigator.camera.DestinationType.FILE_URI,        sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY    });}function uploadPhoto(imageURI) {    //If you wish to display image on your page in app    // Get image handle    var largeImage = document.getElementById('largeImage');    // Unhide image elements    largeImage.style.display = 'block';    // Show the captured photo    // The inline CSS rules are used to resize the image    largeImage.src = imageURI;    var options = new FileUploadOptions();    options.fileKey = "file";    var userid = '123456';    var imagefilename = userid + Number(new Date()) + ".jpg";    options.fileName = imagefilename;    options.mimeType = "image/jpg";    var params = new Object();    params.imageURI = imageURI;    params.userid = sessionStorage.loginuserid;    options.params = params;    options.chunkedMode = false;    var ft = new FileTransfer();    var url = "Your_Web_Service_URL";    ft.upload(imageURI, url, win, fail, options, true);}//Success callbackfunction win(r) {    alert("Image uploaded successfully!!");}//Failure callbackfunction fail(error) {    alert("There was an error uploading image");}// Called if something bad happens.// function onFail(message) {    alert('Failed because: ' + message);}

Create a button in your HTML page, on it's onclick event call following functions as per your requirement.

  • Call capturePhoto() function to capture and upload photo.
  • Call getPhoto() function to get image from gallery.

HTML should contain a buttons like:

<input name="button" type="button" onclick="capturePhoto()" value="Take Photo"/><input name="button" type="button" onclick="getPhoto();" value="Browse" />

Hope that helps.


This is one sample application which I did to upload a pic to server

function getphoto() {   navigator.camera.getPicture(uploadPhoto, function(message)   {      alert('get picture failed');   },   {     quality: 10,destinationType:navigator.camera.DestinationType.FILE_URI,sourceType:navigator.camera.PictureSourceType.PHOTOLIBRARY });    }function uploadPhoto(imageURI) {       alert("imageURI: " + imageURI);    document.getElementById("myimg").src = imageURI;    alert("imageURI :  " + imageURI);    var options = new FileUploadOptions();     options.chunkedMode = false;    options.fileKey = "recFile";     var imagefilename = imageURI;     options.fileName = imagefilename;     options.mimeType = "image/jpeg";     var ft = new FileTransfer();     ft.upload(imageURI, "http://192.168.5.109:86/YourService.svc/SaveImage", win, fail, options); } function win(r) {     alert("Sent = " + r.bytesSent); } function fail(error) {     switch (error.code)     {       case FileTransferError.FILE_NOT_FOUND_ERR:       alert("Photo file not found");       break;      case FileTransferError.INVALID_URL_ERR:       alert("Bad Photo URL");       break;      case FileTransferError.CONNECTION_ERR:       alert("Connection error");       break;     }     alert("An error has occurred: Code = " + error.code); }

Hope this helps

ThanksAB