title: Android : Upload image to PHP server
body: <p>I have write a script to upload an image taken from camera to my server. I get <strong>200OK</strong> response but I don't see my image on my server in uploads/ folder :</p>
  
  <p><img src="https://i.stack.imgur.com/Xugbc.jpg" alt="enter image description here"></p>
  
  <p>Maybe my script contain an error. Could you help me please ?</p>
  
  <p>My example is the following link : <a href="http://androidexample.com/Upload_File_To_Server_-_Android_Example/index.php?view=article_discription&amp;aid=83&amp;aaid=106" rel="noreferrer">http://androidexample.com/Upload_File_To_Server_-_Android_Example/index.php?view=article_discription&amp;aid=83&amp;aaid=106</a></p>
  
  <p>Here is the compleete Android class :</p>
  
  <pre><code>import java.io.DataOutputStream;
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.FileNotFoundException;
  import java.net.HttpURLConnection;
  import java.net.MalformedURLException;
  import java.net.URL;
  import java.text.SimpleDateFormat;
  import java.util.Date;
  
  import android.app.ActionBar;
  import android.app.Activity;
  import android.app.ProgressDialog;
  import android.content.Intent;
  import android.graphics.Bitmap;
  import android.graphics.BitmapFactory;
  import android.graphics.Color;
  import android.graphics.drawable.ColorDrawable;
  import android.net.Uri;
  import android.os.Bundle;
  import android.os.Environment;
  import android.provider.MediaStore;
  import android.util.Log;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.Button;
  import android.widget.ImageButton;
  import android.widget.ImageView;
  import android.widget.TextView;
  import android.widget.Toast;
  
  public class New_annonce_act_step3 extends Activity {
  
      private static final int REQUEST_IMAGE = 100;   
  
      TextView tvPath;
      TextView txtHaut;
      ImageView preview;
      File destination;
      String imagePath;
      ImageButton takePhoto;
      Button btnCreate;
  
      int serverResponseCode = 0;
      ProgressDialog dialog = null;
  
      String upLoadServerUri = null;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          // TODO Auto-generated method stub
          super.onCreate(savedInstanceState);
  
          setContentView(R.layout.nouvelle_annonce_step3);
  
          // Change color of action bar
          ActionBar bar = getActionBar();
          bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0099CC")));
  
          preview = (ImageView) findViewById(R.id.nouvelle_annonce_step3_phototaken_preview);
          btnCreate = (Button) findViewById(R.id.nouvelle_annonce_step3_btn) ;
          txtHaut = (TextView) findViewById(R.id.nouvelle_annonce_step3_texteHaut);
          takePhoto = (ImageButton) findViewById(R.id.nouvelle_annonce_choose_image);
          preview.setVisibility(View.GONE);
  
          upLoadServerUri = "http://mywebsite.com/database/PDO/uploadFile.php";
  
          String name = dateToString(new Date(),"yyyy-MM-dd-hh-mm-ss");
          destination = new File(Environment.getExternalStorageDirectory(), name + ".jpg");
  
          takePhoto.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v) {
                  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                  intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(destination));
                  startActivityForResult(intent, REQUEST_IMAGE);
              }
          });
  
          btnCreate.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v) {
                  dialog = ProgressDialog.show(New_annonce_act_step3.this, "", "Uploading file...", true);
  
                  new Thread(new Runnable() {
                      public void run() {              
                          uploadFile(imagePath);
                      }
                  }).start();        
              }
  
          });
  
  
  
  
  
      }
  
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          if( requestCode == REQUEST_IMAGE &amp;&amp; resultCode == Activity.RESULT_OK ){
              try {
                  preview.setVisibility(View.VISIBLE);
                  takePhoto.setVisibility(View.GONE);
                  txtHaut.setText("Cette image est parfaite !");
                  FileInputStream in = new FileInputStream(destination);
                  BitmapFactory.Options options = new BitmapFactory.Options();
                  options.inSampleSize = 10;
                  imagePath = destination.getAbsolutePath();
                  Log.d("INFO", "PATH === " +imagePath);
                  //tvPath.setText(imagePath);
                  Bitmap bmp = BitmapFactory.decodeStream(in, null, options);
                  preview.setImageBitmap(bmp);
              } catch (FileNotFoundException e) {
                  e.printStackTrace();
              }
  
          }
          else{
              tvPath.setText("Request cancelled");
          }
      }
  
      public String dateToString(Date date, String format) {
          SimpleDateFormat df = new SimpleDateFormat(format);
          return df.format(date);
      }
  
      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; 
          File sourceFile = new File(sourceFileUri); 
  
          if (!sourceFile.isFile()) {
              dialog.dismiss(); 
              Log.e("uploadFile", "Source File not exist :" +imagePath);
              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 &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() {
  
                              Toast.makeText(New_annonce_act_step3.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() {
  
                          Toast.makeText(New_annonce_act_step3.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() {
  
                          Toast.makeText(New_annonce_act_step3.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>And here is the <strong>PHP script :</strong></p>
  
  <pre><code>&lt;?php
      $file_path = "uploads/";
  
      $file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
      if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
          echo "success";
      } else{
          echo "fail";
      }
   ?&gt;
  </code></pre>