Uploading an image to a webserver – Android/Java

Last week, I faced a problem to send an image to the server, I have tried a lot of ways, but seemed that nothing would work.

After some research, I found the HTTPClient API , this API helped me to do the dirty work, and it did pretty well. I will show you now, how to upload images and/or strings to the web server.

It’s pretty simple, actually. I gonna do in only one function!

 

// create a bitmap variable before anything;

private Bitmap bitmap;

// variable to set a name to the image into SD card;
// this variable, you have to put the path for the File, It's up to you;

public static String exsistingFileName;

// sendData is the function name, to call it, you can use something like sendData(null);
// remember to wrap it into a try catch;

public void sendData(String[] args) throws Exception {
	try {

		HttpClient httpClient = new DefaultHttpClient();
		HttpContext localContext = new BasicHttpContext();

		// here, change it to your php;

		HttpPost httpPost = new HttpPost("http://www.myURL.com/myPHP.php");
		MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
		bitmap = BitmapFactory.decodeFile(exsistingFileName);

		// you can change the format of you image compressed for what do you want;
		//now it is set up to 640 x 480;

		Bitmap bmpCompressed = Bitmap.createScaledBitmap(bitmap, 640, 480, true);
		ByteArrayOutputStream bos = new ByteArrayOutputStream();

		// CompressFormat set up to JPG, you can change to PNG or whatever you want;

		bmpCompressed.compress(CompressFormat.JPEG, 100, bos);
		byte[] data = bos.toByteArray();

		// sending a String param;

		entity.addPart("myParam", new StringBody("my value"));

		// sending a Image;
		// note here, that you can send more than one image, just add another param, same rule to the String;

		entity.addPart("myImage", new ByteArrayBody(data, "temp.jpg"));

		httpPost.setEntity(entity);
		HttpResponse response = httpClient.execute(httpPost, localContext);
		BufferedReader reader = new BufferedReader(new InputStreamReader( response.getEntity().getContent(), "UTF-8"));
		String sResponse = reader.readLine();

	} catch (Exception e) {

		Log.v("myApp", "Some error came up");

	}

}

 

And you should be good to go :)

This entry was posted in Android, Java and tagged , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>