title: Android - Image becomes empty when uploading to PHP server
body: <p>I am trying to upload an img from an android phone to a php server.</p>
  
  <p>But when it is uploaded its data is lost(the file exist but has 0 bytes)</p>
  
  <p>I dont know if the problem is on the php side or the android side.</p>
  
  <p>Here is the code I use upload</p>
  
  <p>PHP:</p>
  
  <pre><code>&lt;?php
  $base=$_REQUEST['image'];
  $binary=base64_decode($base);
  header('Content-Type: bitmap; charset=utf-8');
  $file = fopen('uploaded_image.jpg', 'wb');
  fwrite($file, $binary);
  fclose($file);
  echo 'Image upload complete!!, Please check your php file directory……';
  ?&gt;
  </code></pre>
  
  <p>Java:</p>
  
  <pre><code>private  void httpPostFileUpload(String fpath){
          HttpURLConnection connection = null;
          DataOutputStream outputStream = null;
          DataInputStream inputStream = null;
  
          String pathToOurFile = fpath;
          Log.v("file path",fpath.toString());
          String urlServer = "http://leojg.alwaysdata.net/tests/androidConnect/upload_image.php";
          //String urlServer = "http://65.182.110.63/public/handle_upload.php";
          String lineEnd = "\r\n";
          String twoHyphens = "--";
          String boundary =  "*****";
          String fname = "";
  
          int bytesRead, bytesAvailable, bufferSize;
          byte[] buffer;
          int maxBufferSize = 1*1024*1024;
  
          try
          {
              File f = new File(pathToOurFile);
              fname =  f.getName();
  
              FileInputStream fileInputStream = new FileInputStream(f);
  
              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);
  
              Log.v("ouput stream",outputStream.toString());              
  
              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)
              int serverResponseCode = connection.getResponseCode();
              String serverResponseMessage = connection.getResponseMessage();
  
              Log.d("amanda", "upload async finished, server response : " + serverResponseMessage);
  
              fileInputStream.close();
              fileInputStream = null;
              outputStream.flush();
              outputStream.close();
              outputStream = null;
              f= null;
  
  
  
              parent.invokeJs("pictureUploadEnded('" + fname + "')");
              //this.delete(fpath);
  
          }
              catch (Exception ex)
          {
                  Log.d("amanda", "exception uploading image : " + ex.getMessage());
          }     
  }
  </code></pre>
  
  <p>Here you can see where the img is stored <a href="http://leojg.alwaysdata.net/tests/androidConnect/" rel="nofollow">http://leojg.alwaysdata.net/tests/androidConnect/</a></p>
  
  <p>SOLUTION:</p>
  
  <pre><code>&lt;?php
  $target_path = "./";
  $target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
  if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
   echo "The file ".  basename( $_FILES['uploadedfile']['name']).
   " has been uploaded";
  } else{
   echo "There was an error uploading the file, please try again!";
  }
  ?&gt;
  </code></pre>