title: how to send data with file upload to the server
body: <p>I am currently uploading file in android. Now I want to send some data lets say and ID with that fileupload. So I will deal with this ID on the server side. Here is how I am uploading file. This code works perfectly fine.</p>
  
  <p>Here is the code</p>
  
  <pre><code>public int uploadFile(String sourceFileUri, final String imageName) {
      //Toast.makeText(getApplicationContext(), imageName, Toast.LENGTH_LONG).show();
      String upLoadServerUri = "http://www.example.com/android/fileupload.php";
      String fileName = sourceFileUri;
      //Toast.makeText(getApplicationContext(), sourceFileUri, Toast.LENGTH_LONG).show();
      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;
  
      File sourceFile = new File(sourceFileUri);
      if (!sourceFile.isFile()) {
          Log.e("uploadFile", "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
  
          bufferSize = Math.min(bytesAvailable, maxBufferSize);
          buffer = new byte[bufferSize];
  
           // read file and write it into form...
          bytesRead = fileInputStream.read(buffer, 0, bufferSize);  
  
          while (bytesRead &gt; 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() {
                       //tv.setText("File Upload Completed.");
                       if(fileData(globalUID, imageName)) {
                           Toast.makeText(Camera.this, "File Upload Complete.", Toast.LENGTH_SHORT).show();
                       }
                   }
              });
          }
          //close the streams //
          fileInputStream.close();
          dos.flush();
          dos.close();
  
      } catch (MalformedURLException ex) {
          dialog.dismiss();
          ex.printStackTrace();
          Toast.makeText(Camera.this, "MalformedURLException", Toast.LENGTH_SHORT).show();
          Log.e("Upload file to server", "error: " + ex.getMessage(), ex);
      } catch (Exception e) {
          dialog.dismiss();
          e.printStackTrace();
          Toast.makeText(Camera.this, "Exception : " + e.getMessage(), Toast.LENGTH_SHORT).show();
          Log.e("Upload file to server Exception", "Exception : " + e.getMessage(), e);
      }
  
      dialog.dismiss();
      return serverResponseCode;
  }
  </code></pre>