0

I used this code to upload a file to local server(wamp server) and it works, but when I change the destination of connection to remote web server the code does not show any error and the process is going well but I could not find the file in the server. Please help me..

public int uploadFile(String sourceFileUri) { String fileName = sourceFileUri; HttpURLConnection conn = null; DataOutputStream dos = null; String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 1 * 1024 * 1024 * 1024; File sourceFile = new File(sourceFileUri); if (!sourceFile.isFile()) { dialog1.dismiss(); Log.e("uploadFile", "Source File not exist"); runOnUiThread(new Runnable() { public void run() { Toast.makeText(UploadAssignment.this, "Source File not exist",Toast.LENGTH_SHORT).show(); } }); return 0; } else { try { // open a URL connection to the Servlet FileInputStream fileInputStream = new FileInputStream(sourceFile); URL url = new URL(upLoadServerUri); // Open a HTTP connection to the URL conn = (HttpURLConnection) url.openConnection(); 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); // create a buffer of maximum size bytesAvailable = fileInputStream.available(); 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("uploadFile", "HTTP Response is : " + serverResponseMessage + ": " + serverResponseCode); if(serverResponseCode == 200) { runOnUiThread(new Runnable(){ public void run() { Toast.makeText(UploadAssignment.this, "File Upload Complete.",Toast.LENGTH_SHORT).show(); browse.setClickable(false); upload.setClickable(false); } }); } //close the streams // fileInputStream.close(); dos.flush(); dos.close(); } catch (MalformedURLException ex) { dialog1.dismiss(); ex.printStackTrace(); runOnUiThread(new Runnable() { public void run() { Toast.makeText(UploadAssignment.this, "MalformedURLException", Toast.LENGTH_SHORT).show(); } }); Log.e("Upload file to server", "error: " + ex.getMessage(), ex); } catch (Exception e) { dialog1.dismiss(); e.printStackTrace(); runOnUiThread(new Runnable() { public void run() { Toast.makeText(UploadAssignment.this, "Got Exception : see logcat ",Toast.LENGTH_SHORT).show(); } }); Log.e("Upload file to server Exception", "Exception : " + e.getMessage(), e); } dialog1.dismiss(); return serverResponseCode; } // End else block } 

1 Answer 1

1

Use Below function to upload file in server,

private void doFileUpload() { File file1 = new File(selectedPath1); File file2 = new File(selectedPath2); File file3 = new File(selectedPath3); File file4 = new File(selectedPath4); String urlString = "your server link/folder_name/filename.php"; try { HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(urlString); FileBody bin1 = new FileBody(file1); FileBody bin2 = new FileBody(file2); FileBody bin3 = new FileBody(file3); FileBody bin4 = new FileBody(file4); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("uploadedfile1", bin1); reqEntity.addPart("uploadedfile2", bin2); reqEntity.addPart("uploadedfile3", bin3); reqEntity.addPart("uploadedfile4", bin4); reqEntity.addPart("user", new StringBody("User")); post.setEntity(reqEntity); HttpResponse response = client.execute(post); resEntity = response.getEntity(); final String response_str = EntityUtils.toString(resEntity); if (resEntity != null) { Log.i("RESPONSE", response_str); runOnUiThread(new Runnable() { public void run() { try { Toast.makeText( getApplicationContext(), "Upload Complete. Check the server uploads directory.", Toast.LENGTH_LONG).show(); } catch (Exception e) { e.printStackTrace(); } } }); } } catch (Exception ex) { Log.e("Debug", "error: " + ex.getMessage(), ex); } } 
Sign up to request clarification or add additional context in comments.

2 Comments

It is not working. When I run the code it give me an exception could not found org.apache.http.entity.mime.content.FileBody
@user2287444 you have to include external jar files in to your project for uploading multiple files to server.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.