sajal
sajal

Reputation: 179

Post image to server by android and get response that by PHP code

I am sending image to server using HTTPUrlConnection. How to write php code to receive image and send response without json. Could you please explain how php will receive file data without json structure.

 public void uploadFile(String sourceFileUri, String upLoadServerUri) {
    URL url=null;
    HttpURLConnection connection = null;

    Bitmap bm = BitmapFactory.decodeFile(sourceFileUri);
    ByteArrayOutputStream bao = new ByteArrayOutputStream();
    bm.compress(Bitmap.CompressFormat.JPEG, 10, bao);

    try {
            //Create connection
            url = new URL(upLoadServerUri);
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            connection.setRequestProperty("Content-Language", "en-US");

            connection.setUseCaches(false);
            connection.setDoInput(true);
            connection.setDoOutput(true);

            //Send request
            DataOutputStream writer = new DataOutputStream(connection.getOutputStream());

            writer.writeBytes(bao.toString());
            writer.flush();
            writer.close();

            //Get Response
            InputStream is = connection.getInputStream();
            BufferedReader rd = new BufferedReader(new InputStreamReader(is));
            String line;
            StringBuffer response = new StringBuffer();
            while ((line = rd.readLine()) != null) {
                response.append(line);
                response.append('\r');
            }
            rd.close();


        } catch (Exception e) {

            e.printStackTrace();
            return null;

        } finally {

            if (connection != null) {
                connection.disconnect();
            }
        }
}

Upvotes: 0

Views: 999

Answers (1)

raj
raj

Reputation: 2088

this is my code which is working. //android

String sourceFileUri = Environment.getExternalStorageDirectory()+"filename.jpeg";

            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()) {

                return null;

            }

            String fullpath = "";

            fullpath = sourceFile + "";
            Log.e("fullpath", fullpath);
            try {
                // open a URL connection to the Servlet
                FileInputStream fileInputStream = new FileInputStream(sourceFileUri);
                Log.e("fileinputstream", "" + fileInputStream);
                URL url = new URL("abc.com/upload.php");
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                        .permitAll().build();
                StrictMode.setThreadPolicy(policy);
                // Open a HTTP connection to the URL
                conn = (HttpURLConnection) url.openConnection();
                // int lenghtOfFile = conn.getContentLength();
                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", fileName);

                dos = new DataOutputStream(conn.getOutputStream());

                dos.writeBytes(twoHyphens + boundary + lineEnd);
                dos.writeBytes("Content-Disposition: form-data; name=\"bill\";filename=\""
                        + fileName + "\"" + lineEnd);

                dos.writeBytes(lineEnd);

                // create a buffer of maximum size
                bytesAvailable = fileInputStream.available();
                Log.e("" + bytesAvailable, "BytesAvailable");
                bufferSize = Math.min(bytesAvailable, maxBufferSize);
                buffer = new byte[bufferSize];
                Log.e("" + buffer, "Buffer");
                // read file and write it into form...
                bytesRead = fileInputStream.read(buffer, 0, bufferSize);
                // long total = 0;
                Log.e("" + bytesRead, "BytesRead");
                while (bytesRead > 0) {
                    // total += count;
                    // publishProgress("" + (int) ((total * 100) /
                    // lenghtOfFile));

                    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)

           String serverResponseMessage = conn.getResponseMessage();  
                Log.e("Server Response code", "" + serverResponseCode);
                if (serverResponseMessage == "sucess") {


                     System.out.println("file uploaded");
                }

                // close the streams //
                fileInputStream.close();
                dos.flush();
                dos.close();

            } catch (Exception e) {
                Log.d("error", e.getMessage());
            }

//php

<?php
    if (is_uploaded_file($_FILES['bill']['tmp_name'])) {
     $name="filename";   

     $tmp_name = $_FILES['bill']['tmp_name'];
     $pic_name = $_FILES['bill']['name'];
     $ext = explode('.',$pic_name);
     $extension = $ext[1];
       if($extension=='png'){
           unlink( $name.'.jpg'); 
            }

      if($extension=='jpg'){
           unlink( $name.'.png'); 
             }

      move_uploaded_file($tmp_name,  $name.'.'.$extension );
            echo "sucess";
            }
        else{
         echo "File not uploaded successfully.";
            }        
     ?>

Upvotes: 2

Related Questions