title: Upload a picture from Android to PHP server
body: <p>I am trying to upload file to a php server from my android device. There is thread with same question but he is using a different method. My Android side code works fine and shows no error message but server is not receiving any file. here is my sample code, I found it online. </p>
  
  <pre><code>import java.io.FileInputStream;
  import android.app.Activity;
  import android.os.Bundle;
  import java.io.DataInputStream;
  import java.io.DataOutputStream;
  import java.io.File;
  import java.io.IOException;
  import java.net.HttpURLConnection;
  import java.net.MalformedURLException;
  import java.net.URL;
  import android.util.Log;
  
  public class uploadfile extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      doFileUpload();
  }
  
  private void doFileUpload(){
  HttpURLConnection conn =    null;
  DataOutputStream dos = null;
  DataInputStream inStream = null;    
  String exsistingFileName = "/sdcard/def.jpg";
  
  // Is this the place are you doing something wrong.
  String lineEnd = "rn";
  String twoHyphens = "--";
  String boundary =  "*****";
  
  int bytesRead, bytesAvailable, bufferSize;
  byte[] buffer;
  int maxBufferSize = 1*1024*1024;
  String responseFromServer = "";
  String urlString = "http://192.168.1.6/index.php";
  
  try
      {
          //------------------ CLIENT REQUEST 
          Log.e("MediaPlayer","Inside second Method");
          FileInputStream fileInputStream = new FileInputStream(new    File(exsistingFileName) );
  
                                          // open a URL connection to the Servlet
                                          URL url = new URL(urlString);
  
                                          // Open a HTTP connection to the URL
                                          conn = (HttpURLConnection) url.openConnection();
  
                                          // Allow Inputs
                                          conn.setDoInput(true);
  
                                          // Allow Outputs
                                          conn.setDoOutput(true);
  
                                          // Don't use a cached copy.
                                          conn.setUseCaches(false);
  
                                          // Use a post method.
                                          conn.setRequestMethod("POST");
                                          conn.setRequestProperty("Connection", "Keep-Alive");
                                          conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
  
                                          dos = new DataOutputStream( conn.getOutputStream() );
                                          dos.writeBytes(twoHyphens + boundary + lineEnd);
                                          dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\""
                                                              + exsistingFileName + "\"" + lineEnd);
                                          dos.writeBytes(lineEnd);
                                          Log.e("MediaPlayer","Headers are written");
  
                                          // 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);
  
                                          // close streams
                                          Log.e("MediaPlayer","File is written");
                                          fileInputStream.close();
                                          dos.flush();
                                          dos.close();
  
                      }
  
        catch (MalformedURLException ex)
  
       {
  
             Log.e("MediaPlayer", "error: " + ex.getMessage(), ex);
  
        }
  
  
  
        catch (IOException ioe)
  
        {
  
             Log.e("MediaPlayer", "error: " + ioe.getMessage(), ioe);
  
        }
  
        //------------------ read the SERVER RESPONSE
        try {
              inStream = new DataInputStream ( conn.getInputStream() );
              String str;
  
              while (( str = inStream.readLine()) != null)
              {
                   Log.e("MediaPlayer","Server Response"+str);
              }
  
              inStream.close();
        }
  
        catch (IOException ioex){
             Log.e("MediaPlayer", "error: " + ioex.getMessage(), ioex);
        }
  
      }
      }
  </code></pre>
  
  <p>and my php server side code is as follows</p>
  
  <pre><code>&lt;?php
  
   $target_path = "uploads/";
  
   $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>
  
  <p>Apache is running. When i run server, this error msg appears There was an error uploading the file, please try again!. I have checked the log data in eclipse and what i think is the socket problem but i am not sure. Please help if anyone knows the solution. </p>
  
  <pre><code>11-28 05:37:55.310: DEBUG/SntpClient(59): request time failed: java.net.SocketException: Address family not supported by protocol
  </code></pre>