title: Uploading an image to a server in android
body: <p>I my app I am trying to send an image over a PHP server. The problem is the PHP programmers say that it should be sent as an data. Following is the code which I am currently using, please help me to convert the image to a data and get a response from the server.</p>
  
  <pre><code>InputStream is;
      private int serverResponseCode;
      private String serverResponseMessage;
      @Override
      public void onCreate(Bundle icicle) 
      {
          super.onCreate(icicle);
          setContentView(R.layout.main);
          HttpURLConnection connection = null;
          DataOutputStream outputStream = null;
          DataInputStream inputStream = null;
  
          String pathToOurFile = "/sdcard/siva.PNG";
          Log.e("pathToOurFile",""+pathToOurFile);
  
          String urlServer = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/upload.php";
          String lineEnd = "\r\n";
          String twoHyphens = "--";
          String boundary =  "*****";
          Log.e("URL Server",""+urlServer);
  
          int bytesRead, bytesAvailable, bufferSize;
          byte[] buffer;
          int maxBufferSize = 1*1024*1024;
          Log.e("maxBufferSize",""+maxBufferSize);
  
          try
          {
              FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile) );
              Log.e("FIS",""+fileInputStream);
              URL url = new URL(urlServer);
              connection = (HttpURLConnection) url.openConnection();
  
      //  Allow Inputs &amp; Outputs
              connection.setDoInput(true);
              connection.setDoOutput(true);
              connection.setUseCaches(false);
  
              // Enable POST method
              connection.setRequestMethod("POST");
  
              connection.setRequestProperty("Connection", "Keep-Alive");
              connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
  
              outputStream = new DataOutputStream( connection.getOutputStream() );
              outputStream.writeBytes(twoHyphens + boundary + lineEnd);
              outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + pathToOurFile +"\"" + lineEnd);
              outputStream.writeBytes(lineEnd);
  
              bytesAvailable = fileInputStream.available();
              bufferSize = Math.min(bytesAvailable, maxBufferSize);
              buffer = new byte[bufferSize];
  
              // Read file
              bytesRead = fileInputStream.read(buffer, 0, bufferSize);
  
              while (bytesRead &gt; 0)
              {
                  outputStream.write(buffer, 0, bufferSize);
                  bytesAvailable = fileInputStream.available();
                  bufferSize = Math.min(bytesAvailable, maxBufferSize);
                  bytesRead = fileInputStream.read(buffer, 0, bufferSize);
              }
  
              outputStream.writeBytes(lineEnd);
              outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
  
              // Responses from the server (code and message)
              Log.e("con",String.valueOf(connection.getDoOutput()));
  
              serverResponseCode = connection.getResponseCode();
              serverResponseMessage = connection.getResponseMessage();
              Log.e("response",""+serverResponseCode);
              Log.e("serverResponseMessage",""+serverResponseMessage);
  
              fileInputStream.close();
              outputStream.flush();
              outputStream.close();
          }
          catch (Exception ex)
          {
              Log.e("Exception Handling",""+ex);
          }
        }
  </code></pre>