I am trying to upload file in Android using PHP on server side but unfortunately it always return null exception. I googled lot for this issue but didn't find any thing useful. Any help would be appreciated please see the code below i am using for this task.
MainActivity.Java
package com.example.test_app;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
    Button b;
    TextView messageText;
    String selectedPath = "";
    String pathToOurFile = "sdcard/Download/Sports+Cars+Wallpapers-1.jpg";
    String urlServer = "http://192.168.0.102:8080/upload.php";
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        messageText=(TextView) findViewById(R.id.myview);
        b= (Button) findViewById(R.id.button1);
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //openGalleryAudio();
                try
                {
                    ServerRequest s = new ServerRequest();
                    s.uploadFile(urlServer, pathToOurFile);
                }
                catch (NullPointerException e) {
                    messageText.append("\r\nNullPointerException NULL: "+e.getMessage());
                    e.printStackTrace();
                } catch (Exception e) {
                    messageText.append("\r\nEXCEPTION: "+e.getMessage());
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}
ServerRequest.java
package com.example.test_app;
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 android.util.Log;
public class ServerRequest {
    public String uploadFile(String upLoadServerUri,String sourceFileUri) {
        StringBuffer response = null;
        int serverResponseCode = 0;
        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);
         {
             try {
                 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.setChunkedStreamingMode(1024);
                 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);
                     // After this line it returns null exception
                 dos = new DataOutputStream(conn.getOutputStream());
                 dos.writeBytes(twoHyphens + boundary + lineEnd);
                 dos.writeBytes("Content-Disposition: form-data; name=\"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 > 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){
                     System.out.println("Done Send to Server !!!");
                     InputStream is = conn.getInputStream();
                     BufferedReader rd = new BufferedReader(new InputStreamReader(is));
                     String line;
                     response = new StringBuffer(); 
                     while((line = rd.readLine()) != null) {
                       response.append(line);
                       response.append('\r');
                     }
                     rd.close();
                 }   
                 //close the streams //
                 fileInputStream.close();
                 dos.flush();
                 dos.close();
            } catch (MalformedURLException ex) {
                Log.e("Upload file to server", "error: " + ex.getMessage(), ex); 
            } catch (Exception e) {
                Log.e("Upload file to server Exception", "Exception : " + e.getMessage(), e);
            }
            return response.toString();
         } // End else block
       }
}
Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test_app"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   <uses-permission android:name="android.permission.RECORD_AUDIO" />
   <uses-permission android:name="android.permission.INTERNET"/> 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.test_app.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
Activity.Xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <TextView
        android:id="@+id/myview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/myview"
        android:layout_marginRight="36dp"
        android:layout_marginTop="27dp"
        android:text="Upload" />
</RelativeLayout>
Upload.php
<?php
$tmpfile=$_FILES["file"]["tmp_name"];
$size=$_FILES["file"]["size"];
$filename=basename($_FILES["file"]["name"]);                              
$type=$_FILES["file"]["type"];
$destination="uploads";
$file_upload=move_uploaded_file ( $tmpfile  ,$filename );
if($file_upload)
{  
echo "Upload Successfully !!!";
}
?>
I can't figure out what the hell is going on with this code :-(
