Search

Upload multiple file with codeigniter and ajax serta menggunkan drag file tutorial



require:

demo

description:
Drag and select multi file and showing progres when upload with ajax and codeigniter
here is singgle page where load from view folder of codeigniter
<!doctype html>
<html>
<head>
    <link href="<?php echo base_url() ?>asset/bootsrap/css/bootstrap.min.css" rel="stylesheet">
  <script type="text/javascript" src="<?php echo base_url() ?>/asset/bootsrap/js/jquery.js"></script>
     <script src="<?php echo base_url() ?>asset/bootsrap/js/bootstrap.min.js"></script>
       <script src="<?php echo base_url() ?>asset/admin/bootstrap-filestyle.js"></script>
</head>
<body>
<div class="container">
  <!-- Nav tabs -->
  <ul class="nav nav-tabs" role="tablist">
    <li role="presentation" ><a href="#upload" aria-controls="upload" role="tab" data-toggle="tab">Upload</a></li>
    <li role="presentation" class="active"><a href="#galery" aria-controls="galery" role="tab" data-toggle="tab">Galery</a></li>
  </ul>
  <!-- Tab panes -->
  <div class="tab-content">
    <div role="tabpanel" class="tab-pane fade in " id="upload">
 <br>
   <div id="files" class="row" rel="" >
    </div>
   <div id="holder" style="width:100%; height:200px; border: 5px dashed #ccc" id="holder">
  <div class="drag">Drag</div>
  <div class="drag or">or</div>
  <div class="drag">
   <input class="filestyle drag" type="file" id="userfile" name="userfile" multiple />
  </div>
   </div>
 </div>
    <div role="tabpanel" class="tab-pane fade in active" id="galery">..b.</div>
  </div>
</div >
</body>
</html>
 <style>
 .img-upload{
width:208px;
height:208px;
float:left;
background:#eee;
padding:5px 5px 5px 5px;
margin:3px;
 }
 .img-upload >img{
 display: block;
    display: block;
   margin: auto auto;
 
 }
 .box-opload{
 float:left;
 width:208px;
 float:left;
 margin:3px;
 }
 .progress{
 position:relative;
 top:-7px;
 width:200px;
 height:5px;
 margin-left:8px;

 }
 .progress >.progress-bar{
 height:4px;
 position:relative !important;
 bottom:0px;
 }
  #holder.hover { border: 10px dashed #0c0 !important; }
  .boxfile{
  align-items: center;
  display: flex;
  justify-content: center;
  top:50px;
  position:relative;
  height:40px;
  width:300px;
  }
  .drag{
  font-size:30px;
  color:#ccc;
   align-items: center;
  display: flex;
  justify-content: center;
  }

</style>
<script>
$(".filestyle").filestyle({input: false,buttonText: " pilih"});
var storedFiles = [];
$(document).ready(function() {
    $("#userfile").on("change", handleFileSelect); 
    var holder = document.getElementById('holder');
 holder.ondragover = function () { this.className = 'hover'; return false; };
 holder.ondragend = function () { this.className = ''; return false; };
 holder.ondrop = function (e) {
 this.className = '';
 e.preventDefault();
 var files = e.dataTransfer.files;
 var filesArr = Array.prototype.slice.call(files);
 
  aturfile(e,filesArr);
 }
    });
function aturfile(e,filesArr) {   
 var img = document.createElement("img");
 var jumlah = $("#files > .box-opload").length;
 var i  = 0+jumlah;
 filesArr.forEach(function(f) {  
  i++; 
  var html = "<div class='box-opload'><div class='img-upload' id='img"+i+"' ></div><div class='progress'><div id='p"+i+"' class='progress-bar progress-bar-striped progress-bar-info active'  role='progressbar' aria-valuenow='20' aria-valuemin='0' aria-valuemax='100' style='width: 1%;'></div></div></div>";
  
        $('#files').append(html);
   
   var ext = f.name.split('.').pop().toLowerCase();
   console.log(ext);
   
   if($.inArray(ext, ['gif','png','jpg','jpeg','rar','zip']) == -1) {
     var html = "<img id='"+i+"' src='<?php echo base_url(); ?>gambar/admin/invalid.png' data-file='"+f.name+"' class='selFile img-responsive' title='Click to remove'>";
               $('#img'+i).prepend(html);
      $('#p'+i).toggleClass("progress-bar-info progress-bar-danger");
       $('#p'+i+'').css("width","100%")
     return;
   }
   
            
   
   f.id = i;
            storedFiles.push(f);
   if($.inArray(ext, ['rar','zip'])>0) {
   var html = "<img id='"+i+"' src='<?php echo base_url(); ?>gambar/admin/rar.png' data-file='"+f.name+"' class='selFile img-responsive' title='Click to remove'>";
               $('#img'+i).prepend(html);
      $('#p'+i).attr("rel",f.name);
    $('#p'+i+'').css("width","15%")
   
   }else{
            var reader = new FileReader();
           reader.onload =gambarload.bind(reader,i,img,f);
     $('#p'+i+'').css("width","5%") 
            reader.readAsDataURL(f); 
   }
        });
  
  
  
  if($('#files').attr("rel")==="on"){}else{
   $('#files').attr("rel","on");

   submitFile(e,jumlah);
  }
  }      
 
 
function  gambarload(id,img,f,e){
  img.src = e.target.result;
        var canvas = document.createElement("canvas");
        //var canvas = $("<canvas>", {"id":"testing"})[0];
        var ctx = canvas.getContext("2d");
        ctx.drawImage(img, 0, 0);

        var MAX_WIDTH = 200;
        var MAX_HEIGHT =200;
        var width = img.width;
        var height = img.height;

        if (width > height) {
          if (width > MAX_WIDTH) {
            height *= MAX_WIDTH / width;
            width = MAX_WIDTH;
          }
        } else {
          if (height > MAX_HEIGHT) {
            width *= MAX_HEIGHT / height;
            height = MAX_HEIGHT;
          }
        }
  $('#p'+id+'').css("width","10%")
        canvas.width = width;
        canvas.height = height;
        var ctx = canvas.getContext("2d");
        ctx.drawImage(img, 0, 0, width, height);

        var dataurl = canvas.toDataURL("image/png");
   var html = "<img id='"+id+"' src=\"" + dataurl + "\" data-file='"+f.name+"' class='selFile img-responsive' title='Click to remove'>";
               $('#img'+id).prepend(html);
      $('#p'+id).attr("rel",f.name);
    $('#p'+id+'').css("width","15%"); 

}
function submitFile(e,i){
  
   var data = new FormData();
   console.log(storedFiles[i]);
   if(!storedFiles[i]){
  $('#files').attr("rel","");
  return;
   }
   var ext = storedFiles[i].name.split('.').pop().toLowerCase();
  if($.inArray(ext, ['rar','zip'])>0){
   var formUrl = "<?php echo base_url(); ?>home/upload_file_rar/";
  }else{
   var formUrl = "<?php echo base_url(); ?>home/upload_file/";
  }
  var id= storedFiles[i].id;
        data.append('userfile', storedFiles[i]); 
        $.ajax({
                url: formUrl,
                type: 'POST',
                data: data,
                mimeType: "multipart/form-data",
                contentType: false,
                cache: false,
                processData: false,
    
                success: function(data, textSatus, jqXHR){
        var data = JSON.parse(data);
      if (data["status"]=="sukses"){
        console.log(data["info"]);
       $('#p'+id).css("width","100%") ;
       var selanjutnya= i+1;
       submitFile(e,selanjutnya)
      
      }
     
     
                     
                },
                error: function(jqXHR, textStatus, errorThrown){
                        //handle here error returned
                }
        });

   
}

function handleFileSelect(e) {
        var files = e.target.files;
        var filesArr = Array.prototype.slice.call(files);
 aturfile(e,filesArr);
}

</script>
and controller:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class home extends CI_Controller {
    public function __construct()
        {
            parent::__construct();
            $this->load->helper('url');
   $this->load->helper('link_aktif');
   $this->load->helper('show');
      $this->load->database();
   $this->load->model('tool_model');
   $this->load->helper(array('form', 'url'));
        }
 
 public function tes(){
 
 $this->load->view("tes");
 }
 
public function upload_file_rar(){
          $config['upload_path']          = './uploads/doc/';
                $config['allowed_types']        = '*';
                $config['max_size']             = 500000000000;
               
                $this->load->library('upload', $config);
                 if ( ! $this->upload->do_upload())
                {
     $error = array('error' => $this->upload->display_errors());
                    if (is_array($error)) {
      foreach ($error as $item) {
      $arr = array('info' => $this->upload->display_errors(),'status'=>"error");
      json_encode($arr);
      return  $arr;
      }
     }     
                }
                else
                {
     $image_data =$this->upload->data();
     $this->tool_model->resizes_thumb($image_data);
     $this->tool_model->resizes($image_data);
                     //echo $image_data["file_name"] ;
     $this->add_data_urut_upload("doc",$image_data["file_name"]);
     $arr = array('info' =>$image_data["file_name"],'status'=>"sukses","progress"=>"100%");
     echo  json_encode($arr);
      
                }


}
public function upload_file(){
          $config['upload_path']          = './uploads/original/';
                $config['allowed_types']        = 'gif|jpg|png|jpeg||zip|rar|';
                $config['max_size']             = 500000000000;
                $this->load->library('upload', $config);
                if ( ! $this->upload->do_upload())
                {
     $error = array('error' => $this->upload->display_errors());
                    if (is_array($error)) {
      foreach ($error as $item) {
      $arr = array('info' => $this->upload->display_errors(),'status'=>"error");
      json_encode($arr);
      return  $arr;
      }
     }     
                }
                else
                {
     $image_data =$this->upload->data();
     $this->tool_model->resizes_thumb($image_data);
     $this->tool_model->resizes($image_data);
                     //echo $image_data["file_name"] ;
     $this->add_data_urut_upload("image",$image_data["file_name"]);
     $arr = array('info' =>$image_data["file_name"],'status'=>"sukses","progress"=>"100%");
     echo  json_encode($arr);
      
                }
    

}

  
}
and the last is model
}
public function resizes_thumb($upload_data) { 
 $this->load->library('image_lib');
    $config_res['source_image'] = 'uploads/original/'.$this->upload->file_name;
    $config_res['maintain_ratio'] = TRUE;
    $config_res['width'] = 60;
    $config_res['height'] = 60;
 $config_res['create_thumb'] = true;
 $config_res['thumb_marker'] = "_thumb";
 $config_res['new_image'] = "uploads/thumb/";

    $this->image_lib->initialize($config_res);

    $this->image_lib->resize();

    $this->image_lib->clear();
 
}
public function resizes($upload_data) { 
 $this->load->library('image_lib');
    $config_res['source_image'] = 'uploads/original/'.$this->upload->file_name;
    $config_res['maintain_ratio'] = TRUE;

    $config_res['height'] = 250;
 $config_res['create_thumb'] = true;
 $config_res['thumb_marker'] = "_thumb";
 $config_res['new_image'] = "uploads/post/";

    $this->image_lib->initialize($config_res);

    $this->image_lib->resize();

    $this->image_lib->clear();
}

Cara Baru membuat Facebook Application juni 2015

 Facebook aplikasi adalah progam facebook bagi progamer untuk mendapatkan izin akses untuk di gunakan di beberapa aplikasi baik keperluan pendaftran situs maupun aplikasi seperti game. Facebook Aplikasi memberikan semacam kode APP ID dan Secret id yang dapat di gunakan.

oke langsung saja,

1. masuk ke https://developers.facebook.com/apps/  klik add new App
Add caption

2. pilih untuk situs web


Cara Baru  membuat Facebook Application juni  2015

3. hiraukan yang lain klik skip dan Create App id

4. isi sesuai kebutuhan


5. kita saudah bisa dapatkan APP id dan Secret ID
6. sekarang pilih seting di menu sebelah kiri, jangan lupa isi domain sobat dan pada Site URL masukan link dimana app id dan secreet id akan di proses