Uploading file in php server from android device Uploading file in php server from android device android android

Uploading file in php server from android device


I don't know about your code but providing you both working codes:This is for all types of files. I used it for image, audio and for video files.

Android:

new UploadFileAsync().execute("");  private class UploadFileAsync extends AsyncTask<String, Void, String> {    @Override    protected String doInBackground(String... params) {        try {  String sourceFileUri = "/mnt/sdcard/abc.png";            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()) {                try {                    String upLoadServerUri = "http://website.com/abc.php?";                    // 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("bill", sourceFileUri);                    dos = new DataOutputStream(conn.getOutputStream());                    dos.writeBytes(twoHyphens + boundary + lineEnd);                    dos.writeBytes("Content-Disposition: form-data; name=\"bill\";filename=\""                            + sourceFileUri + "\"" + 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();                    if (serverResponseCode == 200) {                        // messageText.setText(msg);                        //Toast.makeText(ctx, "File Upload Complete.",                        //      Toast.LENGTH_SHORT).show();                        // recursiveDelete(mDirectory1);                    }                    // close the streams //                    fileInputStream.close();                    dos.flush();                    dos.close();                } catch (Exception e) {                    // dialog.dismiss();                    e.printStackTrace();                }                // dialog.dismiss();            } // End else block        } catch (Exception ex) {            // dialog.dismiss();            ex.printStackTrace();        }        return "Executed";    }    @Override    protected void onPostExecute(String result) {    }    @Override    protected void onPreExecute() {    }    @Override    protected void onProgressUpdate(Void... values) {    }}

PHP::

 <?php     if (is_uploaded_file($_FILES['bill']['tmp_name'])) {    $uploads_dir = './';                            $tmp_name = $_FILES['bill']['tmp_name'];                            $pic_name = $_FILES['bill']['name'];                            move_uploaded_file($tmp_name, $uploads_dir.$pic_name);                            }               else{                   echo "File not uploaded successfully.";           }   ?>


Try this: it 100% working copy.

Upload function: (Parameter to a function is the imagePath)

public void uploadFile(String sourceFileUri) {          String fileName = imagePath;          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(imagePath);           if (!sourceFile.isFile()) {                if (dialog != null && dialog.isShowing()) {                    dialog.dismiss();                }            Log.e("uploadFile", "Source File not exist :"+imagePath);          }          else          {            try {                // open a URL connection to the Servlet                FileInputStream fileInputStream = new FileInputStream(sourceFile);                URL url = new URL(Upload_Image_URL);                // 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 > 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);                //close the streams //                fileInputStream.close();                dos.flush();                dos.close();           } catch (MalformedURLException ex) {                    if (dialog != null && dialog.isShowing()) {                        dialog.dismiss();                    }               ex.printStackTrace();               Log.e("Upload file to server", "error: " + ex.getMessage(), ex);             } catch (Exception e) {               if (dialog != null && dialog.isShowing()) {                        dialog.dismiss();               }               e.printStackTrace();           }            if (dialog != null && dialog.isShowing()) {                        dialog.dismiss();            }                 } // End else block              } 

Php Service:

  $file_path = "images/";  $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";}

Must create a folder named "images" in the server so $file_path is valid


If you are using free hosting then the pages are getting redirected for tracking no. of hits. You probably receive Http Response :200 OK but you wont see file uploaded because file is lost.

I myself wasted 3 days searching for the solution but found nothing. Figured this out myself.