title: android-image upload with parameters
body: <p>I am uploading image using following code:-</p>
  
  <pre><code>  package com.example.image_project;
  
  import java.io.BufferedReader;
  import java.io.DataOutputStream;
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.net.HttpURLConnection;
  import java.net.MalformedURLException;
  import java.net.URL;
  import java.util.ArrayList;
  import java.util.List;
  
  import org.apache.http.NameValuePair;
  import org.apache.http.message.BasicNameValuePair;
  import org.json.JSONException;
  import org.json.JSONObject;
  
  import com.example.imag.R;
  
  import android.app.Activity;
  import android.app.ProgressDialog;
  import android.content.Intent;
  import android.database.Cursor;
  import android.graphics.Bitmap;
  import android.graphics.BitmapFactory;
  import android.net.Uri;
  import android.os.Bundle;
  import android.provider.MediaStore;
  import android.util.Log;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.Button;
  import android.widget.ImageView;
  import android.widget.TextView;
  import android.widget.Toast;
  
  public class MainActivity extends Activity implements OnClickListener {
  
      private TextView messageText;
      private Button uploadButton, btnselectpic;
      private ImageView imageview;
      private int serverResponseCode = 0;
      private ProgressDialog dialog = null;
      String userId, profileDisplayName, gender, cityId, mobile,
              isMobileVerified;
      private String upLoadServerUri = null;
      private String imagepath = null;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
  
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          uploadButton = (Button) findViewById(R.id.uploadButton);
          messageText = (TextView) findViewById(R.id.messageText);
          btnselectpic = (Button) findViewById(R.id.button_selectpic);
          imageview = (ImageView) findViewById(R.id.imageView_pic);
  
          btnselectpic.setOnClickListener(this);
          uploadButton.setOnClickListener(this);
          upLoadServerUri = "Some URL";
      }
  
      @Override
      public void onClick(View arg0) {
          if (arg0 == btnselectpic) {
              Intent intent = new Intent();
              intent.setType("image/*");
              intent.setAction(Intent.ACTION_GET_CONTENT);
              startActivityForResult(
                      Intent.createChooser(intent, "Complete action using"), 1);
          } else if (arg0 == uploadButton) {
  
              dialog = ProgressDialog.show(MainActivity.this, "",
                      "Uploading file...", true);
              messageText.setText("uploading started.....");
              new Thread(new Runnable() {
                  public void run() {
  
                      uploadFile(imagepath);
  
                  }
              }).start();
          }
  
      }
  
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  
          if (requestCode == 1 &amp;&amp; resultCode == RESULT_OK) {
              // Bitmap photo = (Bitmap) data.getData().getPath();
  
              Uri selectedImageUri = data.getData();
              imagepath = getPath(selectedImageUri);
              Bitmap bitmap = BitmapFactory.decodeFile(imagepath);
              imageview.setImageBitmap(bitmap);
              messageText.setText("Uploading file path:" + imagepath);
  
          }
      }
  
      public String getPath(Uri uri) {
          String[] projection = { MediaStore.Images.Media.DATA };
          Cursor cursor = managedQuery(uri, projection, null, null, null);
          int column_index = cursor
                  .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
          cursor.moveToFirst();
          return cursor.getString(column_index);
      }
  
      public int uploadFile(String sourceFileUri) {
  
          String fileName = sourceFileUri;
  
          HttpURLConnection conn = null;
          DataOutputStream dos = null;
          String lineEnd = "\r\n";
          String twoHyphens = "--";
          String boundary = "---------uiytuhjfndsjk";
          int bytesRead, bytesAvailable, bufferSize;
          byte[] buffer;
          int maxBufferSize = 1 * 1024 * 1024;
          File sourceFile = new File(sourceFileUri);
  
          if (!sourceFile.isFile()) {
  
              dialog.dismiss();
  
              Log.e("uploadFile", "Source File not exist :" + imagepath);
  
              runOnUiThread(new Runnable() {
                  public void run() {
                      messageText.setText("Source File not exist :" + imagepath);
                  }
              });
  
              return 0;
  
          } else {
              try {
                  userId = "3473";
                  profileDisplayName = "Anshul Khandelwal12";
                  gender = "1";
                  mobile = "8934567123";
                  isMobileVerified = "0";
                  cityId = "1";
                  // 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("image", fileName);
  
                  dos = new DataOutputStream(conn.getOutputStream());
                  dos.writeBytes(twoHyphens + boundary + lineEnd);
                  dos.writeBytes("Content-Disposition: form-data; name=\"userId\""
                          + lineEnd);
                  dos.writeBytes("Content-Type: text/plain; charset=UTF-8"
                          + lineEnd);
                  dos.writeBytes("Content-Length: " + userId.length() + lineEnd);
                  dos.writeBytes(lineEnd);
                  dos.writeBytes(userId + lineEnd);
  
                  dos.writeBytes(twoHyphens + boundary + lineEnd);
                  dos.writeBytes("Content-Disposition: form-data; name=\"profileDisplayName\""
                          + lineEnd);
                  dos.writeBytes("Content-Type: text/plain; charset=UTF-8"
                          + lineEnd);
                  dos.writeBytes("Content-Length: " + profileDisplayName.length()
                          + lineEnd);
                  dos.writeBytes(lineEnd);
                  dos.writeBytes(profileDisplayName + lineEnd);
  
                  dos.writeBytes(twoHyphens + boundary + lineEnd);
                  dos.writeBytes("Content-Disposition: form-data; name=\"gender\""
                          + lineEnd);
                  dos.writeBytes("Content-Type: text/plain; charset=UTF-8"
                          + lineEnd);
                  dos.writeBytes("Content-Length: " + gender.length() + lineEnd);
                  dos.writeBytes(lineEnd);
                  dos.writeBytes(gender + lineEnd);
  
                  dos.writeBytes(twoHyphens + boundary + lineEnd);
                  dos.writeBytes("Content-Disposition: form-data; name=\"mobile\""
                          + lineEnd);
                  dos.writeBytes("Content-Type: text/plain; charset=UTF-8"
                          + lineEnd);
                  dos.writeBytes("Content-Length: " + mobile.length() + lineEnd);
                  dos.writeBytes(lineEnd);
                  dos.writeBytes(mobile + lineEnd);
  
                  dos.writeBytes(twoHyphens + boundary + lineEnd);
                  dos.writeBytes("Content-Disposition: form-data; name=\"isMobileVerified\""
                          + lineEnd);
                  dos.writeBytes("Content-Type: text/plain; charset=UTF-8"
                          + lineEnd);
                  dos.writeBytes("Content-Length: " + isMobileVerified.length()
                          + lineEnd);
                  dos.writeBytes(lineEnd);
                  dos.writeBytes(isMobileVerified + lineEnd);
  
                  dos.writeBytes(twoHyphens + boundary + lineEnd);
                  dos.writeBytes("Content-Disposition: form-data; name=\"cityId\""
                          + lineEnd);
                  dos.writeBytes("Content-Type: text/plain; charset=UTF-8"
                          + lineEnd);
                  dos.writeBytes("Content-Length: " + cityId.length() + lineEnd);
                  dos.writeBytes(lineEnd);
                  dos.writeBytes(cityId + lineEnd);
  
                  dos.writeBytes(twoHyphens + boundary + lineEnd);
                  dos.writeBytes("Content-Disposition: form-data; name=\"image\";filename=\""
                          + fileName + "\"" + lineEnd);
  
                  dos.writeBytes("Content-Type: image/jpeg" + 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 &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();
                  InputStream urlInputStream = conn.getInputStream();
                  String json = null;
                  try {
                      BufferedReader reader = new BufferedReader(
                              new InputStreamReader(urlInputStream, "iso-8859-1"),
                              8);
                      StringBuilder sb = new StringBuilder();
                      String line = null;
                      while ((line = reader.readLine()) != null) {
                          sb.append(line + "\n");
                      }
                      urlInputStream.close();
                      json = sb.toString();
                  } catch (Exception e) {
                      Log.e("Buffer Error",
                              "Error converting result " + e.toString());
                  }
                  JSONObject jObj;
                  // try parse the string to a JSON object
                  try {
                      jObj = new JSONObject(json);
                  } catch (JSONException e) {
                      Log.e("JSON Parser", "Error parsing data " + e.toString());
                  }
  
                  Log.d("uploadFile", "HTTP Response is : "
                          + serverResponseMessage + ": " + serverResponseCode);
                  Log.d("content",
                          "HTTP Response content is : " + json.toString() + ": "
                                  + serverResponseCode);
  
                  if (serverResponseCode == 200) {
  
                      runOnUiThread(new Runnable() {
                          public void run() {
                              String msg = "File Upload Completed.\n\n See uploaded file here : \n\n"
                                      + " F:/wamp/wamp/www/uploads";
                              messageText.setText(msg);
                              Toast.makeText(MainActivity.this,
                                      "File Upload Complete.", Toast.LENGTH_SHORT)
                                      .show();
                          }
                      });
                  }
  
                  // close the streams //
                  fileInputStream.close();
                  dos.flush();
                  dos.close();
  
              } catch (MalformedURLException ex) {
  
                  dialog.dismiss();
                  ex.printStackTrace();
  
                  runOnUiThread(new Runnable() {
                      public void run() {
                          messageText
                                  .setText("MalformedURLException Exception : check script url.");
                          Toast.makeText(MainActivity.this,
                                  "MalformedURLException", Toast.LENGTH_SHORT)
                                  .show();
                      }
                  });
  
                  Log.e("Upload file to server", "error: " + ex.getMessage(), ex);
              } catch (Exception e) {
  
                  dialog.dismiss();
                  e.printStackTrace();
  
                  runOnUiThread(new Runnable() {
                      public void run() {
                          messageText.setText("Got Exception : see logcat ");
                          Toast.makeText(MainActivity.this,
                                  "Got Exception : see logcat ",
                                  Toast.LENGTH_SHORT).show();
                      }
                  });
                  Log.e("Upload file to server Exception",
                          "Exception : " + e.getMessage(), e);
              }
              dialog.dismiss();
              return serverResponseCode;
  
          } // End else block
      }
  
  }
  </code></pre>
  
  <p>Here in this code i am able to upload parameters but image is not uploading.I took this code from stack over flow and some other website but it is working earlier but i don't know why it is not working.Please help me.
  Thank you in advance.</p>