Friday, August 6, 2010

Upload a file to remote server in Android

AIM : To upload a file data to a remote server by and check the response
Step 1) Create a method to upload

public static int upLoad2Server(String sourceFileUri) {
String upLoadServerUri = "your remote server link";
// String [] string = sourceFileUri;
String fileName = sourceFileUri;

HttpURLConnection conn = null;
DataOutputStream dos = null;
DataInputStream inStream = null;
String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
int bytesRead, bytesAvailable, bufferSize;
byte[] buffer;
int maxBufferSize = 1 * 1024 * 1024;
String responseFromServer = "";

File sourceFile = new File(sourceFileUri);
if (!sourceFile.isFile()) {
Log.e("Huzza", "Source File Does not exist");
return 0;
try { // open a URL connection to the Servlet
FileInputStream fileInputStream = new FileInputStream(sourceFile);
URL url = new URL(upLoadServerUri);
conn = (HttpURLConnection) url.openConnection(); // Open a HTTP  connection to  the URL
conn.setDoInput(true); // Allow Inputs
conn.setDoOutput(true); // Allow Outputs
conn.setUseCaches(false); // Don't use a Cached Copy
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("ENCTYPE", "multipart/form-data");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
conn.setRequestProperty("uploaded_file", fileName);
dos = new DataOutputStream(conn.getOutputStream());

dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""+ fileName + "\"" + lineEnd);

bytesAvailable = fileInputStream.available(); // create a buffer of  maximum size
Log.i("Huzza", "Initial .available : " + bytesAvailable);

bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];

// read file and write it into form...
bytesRead =, 0, bufferSize);

while (bytesRead > 0) {
dos.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead =, 0, bufferSize);

// send multipart form data necesssary after file data...
dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

// Responses from the server (code and message)
serverResponseCode = conn.getResponseCode();
String serverResponseMessage = conn.getResponseMessage();

Log.i("Upload file to server", "HTTP Response is : " + serverResponseMessage + ": " + serverResponseCode);
// close streams
Log.i("Upload file to server", fileName + " File is written");
} catch (MalformedURLException ex) {
Log.e("Upload file to server", "error: " + ex.getMessage(), ex);
} catch (Exception e) {
//this block will give the response of upload link
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(conn
String line;
while ((line = rd.readLine()) != null) {
Log.i("Huzza", "RES Message: " + line);
} catch (IOException ioex) {
Log.e("Huzza", "error: " + ioex.getMessage(), ioex);
return serverResponseCode;  // like 200 (Ok)

} // end upLoad2Server

2)call it with 
int reponse=upLoad2Server(""+filepath);
now response have responsecode like 200,401,500 etc..
If 200 OK..uploaded.


  1. Hi,

    I would like to implement an upload progress bar to the code, how can I get the real sent bytes during the while loop?

  2. Dear sir,
    Please help me,
    i want to post image+string data to server.
    This code is running well for only upload image

    please help me how i send image with string data

  3. This comment has been removed by the author.

  4. I am new to android and wanna to develop an attractive game. Is there any interested game that can be developed in Android... Ya, then tell me how? or at least gv me a link plz...

    Thanks in advance...

  5. How can i pass the filepath of a file reside in r.drawable folder

  6. I have a error "405: Method Not Allowed"
    Any solutions..??????

  7. please someone help me

    i am unable to upload images on server

    1. first understand your service dude..
      1.convert image to byte array..

  8. Hello Ramamohan,
    Nice post.
    How the webservice is calling with android. Followig is the scenario we are looking for.

    We have a .NET web application with some web services like updateSaceDetails(string wsUser, string wsPassword, string aBulkDelimitedData).

    I have to pass those parameters into that webservice and update this into database on server. we are using HTTPS type request.

    Thanks in advance


  9. Thanks for sharing..
    Can I get the answer for: "I would like to implement an upload progress bar to the code, how can I get the real sent bytes during the while loop?"

  10. server side code??????lol

  11. Hi Please provide some help how to post both image file and basic details as NameValuePair from android to server using post please

  12. Hi

    Which location file save in Server.Please Reply

  13. Hi
    Response Coming but file is not uploaded in server. how to check it Please reply


Android Developers Blog

Ram's shared items