Showing posts with label Json. Show all posts
Showing posts with label Json. Show all posts

Tuesday, October 10, 2017

upload Imge or text by using php and Rest Api... final




FileHandler.php
====================


<?php

class FileHandler
{

    private $con;

    public function __construct()
    {
        require_once dirname(__FILE__) . '/DbConnect.php';

        $db = new DbConnect();
        $this->con = $db->connect();
    }


    public function saveFile($file, $extension, $desc)
    {
        $name = round(microtime(true) * 1000) . '.' . $extension;
        $filedest = dirname(__FILE__) . UPLOAD_PATH . $name;
        move_uploaded_file($file, $filedest);

        $url = $server_ip = gethostbyname(gethostname());

        $stmt = $this->con->prepare("INSERT INTO images (description, image) VALUES (?, ?)");
        $stmt->bind_param("ss", $desc, $name);
        if ($stmt->execute()){
return true;
}
else{
 
   //error !! don't go further
   var_dump($this->db->error);

}
            
        return false;
    }
 public function saveFil($file, $extension, $sname, $phone)
    {
        $name = round(microtime(true) * 1000) . '.' . $extension;
        $filedest = dirname(__FILE__) . UPLOAD_PATH . $name;
        move_uploaded_file($file, $filedest);

        $url = $server_ip = gethostbyname(gethostname());

        $stmt = $this->con->prepare("INSERT INTO image(sname,image,phone) VALUES (?, ?, ?)");
        $stmt->bind_param("sss", $sname, $name,$phone);
        if ($stmt->execute()){
return true;
}
else{
 
   //error !! don't go further
//secho $this->db->error;

}
            
        return false;
    }
//$sname,$email, $phone,$roll,$session,$year,$homedst

 public function saveCSE($file, $extension, $sname, $email, $phone,$roll,$year,$homedst)
    {
        $name = round(microtime(true) * 1000) . '.' . $extension;
        $filedest = dirname(__FILE__) . UPLOAD_PATH . $name;
        move_uploaded_file($file, $filedest);

        $url = $server_ip = gethostbyname(gethostname());

        $stmt = $this->con->prepare("INSERT INTO csestudent(sname,image,email, phone,roll,year,homedst) VALUES (?, ?, ?, ?, ?, ?, ?)");
        $stmt->bind_param("sssssss", $sname,$name,$email, $phone,$roll,$year,$homedst);
        if ($stmt->execute()){
return true;
}
else{
 
   //error !! don't go further
//echo $this->db->error;

}
            
        return false;
    }
    public function get($phone, $roll)
    {
        $stmt = $this->con->prepare("SELECT phone, roll, image FROM csestudent where phone= $phone || roll= $roll");
        $stmt->execute();
         $stmt->bind_result($phone,$roll,$image);

        $images = array();

        while ($stmt->fetch()) {

            $temp = array();
            $absurl = 'http://' . gethostbyname(gethostname()) . '/ImageUploadApi' . UPLOAD_PATH . $image;
            $temp['phone'] = $phone;
            $temp['roll'] = $roll;
            $temp['image'] = $absurl;
            array_push($images, $temp);
        }

        return $images;
    }
    public function getAllFiles()
    {
        $stmt = $this->con->prepare("SELECT id, description, image FROM images ORDER BY id DESC");
        $stmt->execute();
        $stmt->bind_result($id, $desc, $image);

        $images = array();

        while ($stmt->fetch()) {

            $temp = array();
            $absurl = 'http://' . gethostbyname(gethostname()) . '/ImageUploadApi' . UPLOAD_PATH . $image;
            $temp['id'] = $id;
            $temp['desc'] = $desc;
            $temp['image'] = $absurl;
            array_push($images, $temp);
        }

        return $images;
    }

}

?>

Api.php
==================

<?php


require_once dirname(__FILE__) . '/FileHandler.php';

$response = array();

if (isset($_GET['apicall'])) {
    switch ($_GET['apicall']) {
        case 'upload':

            if (isset($_POST['desc']) && strlen($_POST['desc']) > 0 && $_FILES['image']['error'] === UPLOAD_ERR_OK) {
                $upload = new FileHandler();

                $file = $_FILES['image']['tmp_name'];

                $desc = $_POST['desc'];

                if ($upload->saveFile($file, getFileExtension($_FILES['image']['name']), $desc)) {
                    $response['error'] = false;
                    $response['message'] = 'File Uploaded Successfullly';
                }

            } else {
                $response['error'] = true;
                $response['message'] = 'Required parameters are not available';
            }

            break;
case 'uploadimage':

            if (isset($_POST['sname']) && strlen($_POST['sname']) > 0 && $_FILES['image']['error'] === UPLOAD_ERR_OK) {
                $upload = new FileHandler();

                $file = $_FILES['image']['tmp_name'];

                $sname = $_POST['sname'];
                $phone = $_POST['phone'];
          

                if ($upload->saveFil($file, getFileExtension($_FILES['image']['name']), $sname, $phone)) {
                    $response['error'] = false;
                    $response['message'] = 'File Uploaded Successfullly';
                }

            } else {
                $response['error'] = true;
                $response['message'] = 'Required parameters are not available';
            }

            break;
case 'csestu':
//$email, $phone,$roll,$session,$year,$homedst

            if (isset($_POST['sname']) && strlen($_POST['sname']) > 0 && $_FILES['image']['error'] === UPLOAD_ERR_OK) {
                $upload = new FileHandler();

                $file = $_FILES['image']['tmp_name'];

                $sname = $_POST['sname'];
                $email = $_POST['email'];
                $phone = $_POST['phone'];
                $roll = $_POST['roll'];
              
                $year = $_POST['year'];
                $homedst = $_POST['homedst'];
$response['check'] = $email.$phone;

                if ($upload->saveCSE($file, getFileExtension($_FILES['image']['name']), $sname, $email, $phone,$roll,$year,$homedst)) {
                   
   $response['error'] = false;
                    $response['message'] = 'File Uploaded Successfullly';
                }

            } else {
                $response['error'] = true;
                $response['message'] = 'Required parameters are not available';
            }

            break;
//get info from server
case 'checkinfo':
// , $phone,$roll

            if (isset($_POST['phone']) && strlen($_POST['phone']) > 0) {
                $upload = new FileHandler();

                $phone = $_POST['phone'];
                $roll = $_POST['roll'];
                
              
             
  
   $response['error'] = false;
                   $response['message'] = $upload->get($phone,$roll);
           
}
            break;


        case 'getallimages':

            $upload = new FileHandler();
            $response['error'] = false;
            $response['images'] = $upload->getAllFiles();

            break;
default:
                $response['error'] = true;
                $response['message'] = 'sory are not available';
break;
    }
}

echo json_encode($response);

function getFileExtension($file)
{
    $path_parts = pathinfo($file);
    return $path_parts['extension'];
}

?>

====================0===================






Constants.php
================

<?php

define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'imageupload');

define('UPLOAD_PATH', '/uploads/');

?>

DbConnect.php
===========

<?php

class DbConnect
{
    private $con;

    public function connect()
    {
        require_once dirname(__FILE__) . '/Constants.php';

        $this->con = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

        if (mysqli_connect_errno()) {
            echo 'Failed to connect ' . mysqli_connect_error();
            return null;
        }



        return $this->con;
    }
}

?>





Sunday, October 8, 2017

Image upload in android studio using Retrofit Json Parsing -


Android Gradle(Module App)











MyResponse.java
-------------------

package com.edupointbd.amirul.fileuploaddemo1;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

/** * Created by Amirul on 08-Oct-17. */
public class MyResponse {

    @SerializedName("error")
    @Expose    private Boolean error;
    @SerializedName("message")
    @Expose    private String message;

    public Boolean getError() {
        return error;
    }

    public void setError(Boolean error) {
        this.error = error;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

}









Api.java
---------------

package com.edupointbd.amirul.fileuploaddemo1;

import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;

/** * Created by Amirul on 08-Oct-17. */
public interface Api {
    //the base URL for our API    //make sure you are not using localhost    //find the ip usinc ipconfig command    String BASE_URL = "http://10.0.2.2/ImageUploadApi/";

    //this is our multipart request    //we have two parameters on is name and other one is description    @Multipart    @POST("Api.php?apicall=upload")
    Call<MyResponse> uploadImage(@Part("image\"; filename=\"myfile.jpg\" ") RequestBody file, @Part("desc") RequestBody desc);

}





==================================== 
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    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="com.edupointbd.amirul.fileuploaddemo1.MainActivity">

    <Button        android:id="@+id/button"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_centerVertical="true"        android:text="Upload Image" />
</RelativeLayout>


MainActivity.java
------------------

package com.edupointbd.amirul.fileuploaddemo1;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import android.provider.Settings;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.CursorLoader;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.io.File;

import okhttp3.MediaType;
import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {

    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ContextCompat.checkSelfPermission(this,
                Manifest.permission.READ_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED) {
            Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
                    Uri.parse("package:" + getPackageName()));
            finish();
            startActivity(intent);
            return;
        }

        //adding click listener to button        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                //opening file chooser                Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(i, 100);
            }
        });
    }

    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 100 && resultCode == RESULT_OK && data != null) {
            //the image URI            Uri selectedImage = data.getData();

            //calling the upload file method after choosing the file            uploadFile(selectedImage, "amirul");
        }
    }

    private void uploadFile(Uri fileUri, String desc) {

        //creating a file        File file = new File(getRealPathFromURI(fileUri));

        //creating request body for file        RequestBody requestFile = RequestBody.create(MediaType.parse(getContentResolver().getType(fileUri)), file);
        RequestBody descBody = RequestBody.create(MediaType.parse("text/plain"), desc);

        //The gson builder        Gson gson = new GsonBuilder()
                .setLenient()
                .create();


        //creating retrofit object        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Api.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();

        //creating our api        Api api = retrofit.create(Api.class);

        //creating a call and calling the upload image method        Call<MyResponse> call = api.uploadImage(requestFile, descBody);

        //finally performing the call        call.enqueue(new Callback<MyResponse>() {
            @Override            public void onResponse(Call<MyResponse> call, Response<MyResponse> response) {
                MyResponse myResponse =  response.body();
                if (!response.body().getError()) {
                    Toast.makeText(getApplicationContext(),myResponse.getMessage(), Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(getApplicationContext(), "Some error occurred...", Toast.LENGTH_LONG).show();
                }
            }

            @Override            public void onFailure(Call<MyResponse> call, Throwable t) {
                Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_LONG).show();
            }
        });
    }

    /*    * This method is fetching the absolute path of the image file    * if you want to upload other kind of files like .pdf, .docx    * you need to make changes on this method only    * Rest part will be the same    * */    private String getRealPathFromURI(Uri contentUri) {
        String[] proj = {MediaStore.Images.Media.DATA};
        CursorLoader loader = new CursorLoader(this, contentUri, proj, null, null, null);
        Cursor cursor = loader.loadInBackground();
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        String result = cursor.getString(column_index);
        cursor.close();
        return result;
    }
}


============================ 




<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />