Create Food Order Tracking app using Android Timeline View Library

Upload Image on Server in Android Using JSON

Hello friends i am telling you how to upload image on server in android using json. Its my project part in which i need to upload client image on folder in server. So i use json to do it and distribute that code with you.
How to Upload Image on Server in Android Using JSON,Upload Image on Server in Android Using JSON,Image on Server in Android Using JSON,Server in Android Using JSON,Android Using JSON,

Project file directory is given below :
How to Upload Image on Server in Android Using JSON,Upload Image on Server in Android Using JSON,Image on Server in Android Using JSON,Server in Android Using JSON,Android Using JSON,
  • First of all you need to make your layout file "activity_main.xml"

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     >

     <ImageView
         android:id="@+id/imageView_pic"
         android:layout_width="100dp"
         android:layout_height="100dp"
         android:layout_gravity="center"
         android:src="@drawable/ic_launcher" />

     <Button
         android:id="@+id/button_selectpic"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="Select Picture" />

     <Button
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:text="Click To Upload File"
         android:id="@+id/uploadButton"
     />
       
     <TextView
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:text=""
         android:id="@+id/messageText"
         android:textColor="#000000"
         android:textStyle="bold"
     />

  </LinearLayout>

  • After making layout you need to make class file "MainActivity.java"

package com.sunil.upload;

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends Activity implements OnClickListener{
    
    private TextView messageText;
    private Button uploadButton, btnselectpic;
    private ImageView imageview;
    private int serverResponseCode = 0;
    private ProgressDialog dialog = null;
       
    private String upLoadServerUri = null;
    private String imagepath=null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
     
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        uploadButton = (Button)findViewById(R.id.uploadButton);
        btnselectpic = (Button)findViewById(R.id.button_selectpic);
        messageText  = (TextView)findViewById(R.id.messageText);
        imageview = (ImageView)findViewById(R.id.imageView_pic);
        
        btnselectpic.setOnClickListener(this);
        uploadButton.setOnClickListener(this);
        upLoadServerUri = "http://10.0.2.2/uploads/UploadToServer.php";
        ImageView img= new ImageView(this);
        
    }
     
    
    @Override
 public void onClick(View arg0) {
  if(arg0==btnselectpic)
  {
   Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Complete action using"), 1);
  }
  else if (arg0==uploadButton) {
   
    dialog = ProgressDialog.show(MainActivity.this, "", "Uploading file...", true);
    messageText.setText("uploading started.....");
    new Thread(new Runnable() {
                 public void run() {
                                     
                      uploadFile(imagepath);
                                              
                 }
               }).start();     
  }
  
 } 
    
    @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     
     if (requestCode == 1 && resultCode == RESULT_OK) {
            //Bitmap photo = (Bitmap) data.getData().getPath(); 
          
            Uri selectedImageUri = data.getData();
            imagepath = getPath(selectedImageUri);
            Bitmap bitmap=BitmapFactory.decodeFile(imagepath);
            imageview.setImageBitmap(bitmap);
            messageText.setText("Uploading file path:" +imagepath);
      
     }
    }
      public String getPath(Uri uri) {
             String[] projection = { MediaStore.Images.Media.DATA };
             Cursor cursor = managedQuery(uri, projection, null, null, null);
             int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
             cursor.moveToFirst();
             return cursor.getString(column_index);
         }
     
    public int uploadFile(String sourceFileUri) {
          
       
       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()) {
           
            dialog.dismiss(); 
            
            Log.e("uploadFile", "Source File not exist :"+imagepath);
            
            runOnUiThread(new Runnable() {
                public void run() {
                 messageText.setText("Source File not exist :"+ imagepath);
                }
            }); 
            
            return 0;
           
          }
          else
          {
            try { 
             
               // 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("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);
                
                if(serverResponseCode == 200){
                 
                    runOnUiThread(new Runnable() {
                         public void run() {
                          String msg = "File Upload Completed.\n\n See uploaded file here : \n\n"
                                  +" F:/wamp/wamp/www/uploads";
                          messageText.setText(msg);
                             Toast.makeText(MainActivity.this, "File Upload Complete.", Toast.LENGTH_SHORT).show();
                         }
                     });                
                }    
                
                //close the streams //
                fileInputStream.close();
                dos.flush();
                dos.close();
                 
           } catch (MalformedURLException ex) {
            
               dialog.dismiss();  
               ex.printStackTrace();
               
               runOnUiThread(new Runnable() {
                   public void run() {
                    messageText.setText("MalformedURLException Exception : check script url.");
                       Toast.makeText(MainActivity.this, "MalformedURLException", Toast.LENGTH_SHORT).show();
                   }
               });
               
               Log.e("Upload file to server", "error: " + ex.getMessage(), ex);  
           } catch (Exception e) {
            
               dialog.dismiss();  
               e.printStackTrace();
               
               runOnUiThread(new Runnable() {
                   public void run() {
                    messageText.setText("Got Exception : see logcat ");
                       Toast.makeText(MainActivity.this, "Got Exception : see logcat ", Toast.LENGTH_SHORT).show();
                   }
               });
               Log.e("Upload file to server Exception", "Exception : "  + e.getMessage(), e);  
           }
           dialog.dismiss();       
           return serverResponseCode; 
           
           } // End else block 
         }

 
}
  • After that you need to coding you server side "UploadToServer.php"
<?php
  
    $file_path = "uploads/";
     
    $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";
    }
 ?>
Download this example from here: Upload Image on Server in Android Using JSON

Comments

  1. Congratulations! very good your article.
    How can I change the "uploadFile" method to send an email and a comment on the picture?

    ReplyDelete

Post a Comment