Solution:
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.setRequestMethod("POST");
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);
dos.writeBytes(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 = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0) {
dos.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
// send multipart form data necesssary after file data...
dos.writeBytes(lineEnd);
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");
fileInputStream.close();
dos.flush();
dos.close();
} catch (MalformedURLException ex) {
ex.printStackTrace();
Log.e("Upload file to server", "error: " + ex.getMessage(), ex);
} catch (Exception e) {
e.printStackTrace();
}
//this block will give the response of upload link
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(conn
.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
Log.i("Huzza", "RES Message: " + line);
}
rd.close();
} 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.
Hi,
ReplyDeleteI would like to implement an upload progress bar to the code, how can I get the real sent bytes during the while loop?
Dear sir,
ReplyDeletePlease 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
This comment has been removed by the author.
ReplyDeleteThis is nice code
ReplyDeletethanks
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...
ReplyDeleteThanks in advance...
How can i pass the filepath of a file reside in r.drawable folder
ReplyDeleteI have a error "405: Method Not Allowed"
ReplyDeleteAny solutions..??????
please someone help me
ReplyDeletei am unable to upload images on server
first understand your service dude..
Delete1.convert image to byte array..
Hello Ramamohan,
ReplyDeleteNice 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
Regards
Shibu
Thanks for sharing..
ReplyDeleteCan 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?"
server side code??????lol
ReplyDeleteHi Please provide some help how to post both image file and basic details as NameValuePair from android to server using post please
ReplyDeleteHi
ReplyDeleteWhich location file save in Server.Please Reply
Hi
ReplyDeleteResponse Coming but file is not uploaded in server. how to check it Please reply