title: How to handle Server side HTTP file upload from Java client
body: <p>I want to upload a file from a client to a server.</p>
  
  <p>Client: Java using HTTP post
  Server: Java Servlet</p>
  
  <p>I have added the client side coding here. But, i don't have any idea with the server side processing. Please do help me with a code snippet. </p>
  
  <pre><code> private String Tag = "UPLOADER";
      private String urlString = "http://192.168.42.140:8080/sampweb";
      HttpURLConnection conn;
      String exsistingFileName = "/sdcard/log.txt";
      String lineEnd = "\r\n";
      String twoHyphens = "--";
      String boundary = "*****";
      try {
          // ------------------ CLIENT REQUEST
  
          Log.e(Tag, "Inside second Method");
  
          FileInputStream fileInputStream = new FileInputStream(new File(
                  exsistingFileName));
  
          // open a URL connection to the Servlet
  
          URL url = new URL(urlString);
  
          // Open a HTTP connection to the URL
  
          conn = (HttpURLConnection) url.openConnection();
  
          // Allow Inputs
          conn.setDoInput(true);
  
          // Allow Outputs
          conn.setDoOutput(true);
  
          // Don't use a cached copy.
          conn.setUseCaches(false);
  
          // Use a post method.
          conn.setRequestMethod("POST");
  
          conn.setRequestProperty("Connection", "Keep-Alive");
  
          conn.setRequestProperty("Content-Type",
                  "multipart/form-data;boundary=" + boundary);
  
          DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
  
          dos.writeBytes(twoHyphens + boundary + lineEnd);
          dos
                  .writeBytes("Content-Disposition: post-data; name=uploadedfile;filename="
                          + exsistingFileName + "" + lineEnd);
          dos.writeBytes(lineEnd);
  
          Log.e(Tag, "Headers are written");
  
          // create a buffer of maximum size
  
          int bytesAvailable = fileInputStream.available();
          int maxBufferSize = 1000;
          // int bufferSize = Math.min(bytesAvailable, maxBufferSize);
          byte[] buffer = new byte[bytesAvailable];
  
          // read file and write it into form...
  
          int bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
  
          while (bytesRead &gt; 0) {
              dos.write(buffer, 0, bytesAvailable);
              bytesAvailable = fileInputStream.available();
              bytesAvailable = Math.min(bytesAvailable, maxBufferSize);
              bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
          }
  
          // send multipart form data necessary after file data...
  
          dos.writeBytes(lineEnd);
          dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
  
          // close streams
          Log.e(Tag, "File is written");
          fileInputStream.close();
          dos.flush();
          dos.close();
  
      } catch (MalformedURLException ex) {
          Log.e(Tag, "error: " + ex.getMessage(), ex);
      }
  
      catch (IOException ioe) {
          Log.e(Tag, "error: " + ioe.getMessage(), ioe);
      }
  
      try {
          BufferedReader rd = new BufferedReader(new InputStreamReader(conn
                  .getInputStream()));
          String line;
          while ((line = rd.readLine()) != null) {
              Log.e("Dialoge Box", "Message: " + line);
          }
          rd.close();
  
      } catch (IOException ioex) {
          Log.e("MediaPlayer", "error: " + ioex.getMessage(), ioex);
      }
  }
  </code></pre>
  
  <p>I'm new to the server programming. If i have done any mistakes do clarify me. Thanks!</p>