/ / Codeigniter / Comment (0)

Tìm hiểu library upload trong codeigniter

Đối với bất kỳ website nào cũng đều cần có chức năng upload file lên server.Trong CodeIgniter hỗ trợ cho chúng ta 1 thư viện upload giúp cho việc tải file lên server 1 cách dễ dàng,ngoài ra thư viện này còn có rất nhiều cấu hình và những lợi ích khác mang lại,chúng ta hãy cùng dần tìm hiểu về nó nhé.
Những tác dụng cơ bản mà thư viện này mang lại:

  1. Giúp chúng ta có thể upload các file lên server 1 cách đơn giản.
  2. Hỗ trợ định dạng file được chỉ định khi tải lên
  3. Tùy chỉnh độ rộng & cao tấm hình đc phép upload một cách dễ dàng.
  4. Giới hạn dung lượng file hình ảnh được tải lên.
  5. Hỗ trợ chúng ta resize ảnh theo nhu cầu.
  6. Đóng dấu bản quyền watermark với định dạng text hoặc chèn logo tấm hình.

Thông tin cấu hình

– Cũng như các thư viện khác trong CodeIgniter,để sử dụng thư viện nào đó trước tiên chúng ta cần load thư viện đó ra:

$this->load->library('upload');

Các thông số cấu hình khi thực hiện tải file:
+ Thư mục chứa file:

$config['upload_path'] = './uploads/';

+ Định dạng file cho phép được tải lên:

$config['allowed_types'] = 'gif|jpg|png';

+ Dung lượng tối đa (tính theo KB):

$config['max_size']	= '100';

+ Chiều rộng tối đa (tính theo pixels):

$config['max_width']  = '1024';

+ Chiều cao tối đa (tính theo pixels):

$config['max_height']  = '768';

Ví dụ:

$config['upload_path']   = './upload/product/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size']      = ‘500';
$config['max_width']     = '1024';
$config['max_height']    = ‘1024';

Các phương thức Upload

$this->upload->do_upload('Ten file'):

+ Phương thức do_upload dùng để thực thi việc upload, nếu không upload được thì phương thức này trả về false,và tham số của nó chính là tên thẻ input dùng để upload

$this->upload->display_errors();

+ Phương thức display_errors dùng để hiển thị ra các lỗi trong quá trình upload file lên server.

$this->upload->data():

+ Phương thức data sẽ lưu 1 mảng dữ liệu chứa thông tin của file upload thành công lên server.
Vi dụ:
Upload 1 file ảnh lên server,thư mục chứa file ảnh là public/upload/user, dung lượng tối đa là 500KB,chiều rộng và chiều cao tối đa cho file ảnh tải lên là 1024px.
– Chúng ta xây dựng form upload trong view như sau (views/upload/index.php):

<html>
   <!-- the head -->
   <head>
      <meta http-equiv="Content-Type" content="text/html ;charset=utf-8" />
   </head>
   <body>
       <h1>Upload file</h1>
       <form method="post" action="" enctype="multipart/form-data">
                <label>Ảnh minh họa:</label>
                <input type="file"  id="image" name="image"><br />
                <input type="submit" class="button" value="Upload" name='submit' />
        </form>
   </body>
</html>

Và chúng ta sẽ có 1 form như sau:

Form upload file

Form upload file

+ Các bạn thấy có 1 chú ý trong form upload file,đó chính là thuộc tính enctype="multipart/form-data",nếu những form mà bạn thực hiện tải file thì bắt buộc trong form phải có thêm thuộc tính này nhé.
+ Thẻ input để cho phép chúng ta có thể lựa chọn file để tải lên phải có kiểu là file
– Chúng ta tạo file controller có tên upload.php với nội dung sau:

<?php
class Upload extends CI_Controller
{
  function index()
  {
      if($this->input->post('submit'))
      {
         //Khai bao bien cau hinh
         $config = array();
         //thuc mục chứa file
         $config['upload_path']   = './public/upload/user';
         //Định dạng file được phép tải
         $config['allowed_types'] = 'jpg|png|gif';
         //Dung lượng tối đa
         $config['max_size']      = '500';
         //Chiều rộng tối đa
         $config['max_width']     = '1028';
         //Chiều cao tối đa
         $config['max_height']    = '1028';
         //load thư viện upload
         $this->load->library('upload', $config);
         //thuc hien upload
         if($this->upload->do_upload('image'))
         {
             //chua mang thong tin upload thanh con
             $data = $this->upload->data();
             //in cau truc du lieu cua file da upload
             print_r($data);
         }
         else
         {
            //hien thi lỗi nếu có
            $error = $this->upload->display_errors();
            echo $error;
         }

      }
          // Hien thi view
	  $this->load->view('upload/index', $this->data);
  }
}

Và kết quả sau khi đã tải file ảnh thành công:

Array
(
    [file_name] => 3.png
    [file_type] => image/png
    [file_path] => D:/xampp/htdocs/ci/public/upload/user/
    [full_path] => D:/xampp/htdocs/ci/public/upload/user/3.png
    [raw_name] => 3
    [orig_name] => 3.png
    [client_name] => 3.png
    [file_ext] => .png
    [file_size] => 28.26
    [is_image] => 1
    [image_width] => 165
    [image_height] => 160
    [image_type] => png
    [image_size_str] => width="165" height="160"
)

Trong đó ý nghĩa các tham số quan trọng là:
+ file_name : Tên file tải lên,các bạn có thể lưu tên file này vào csdl
+ file_type: kiểu file
+ file_path: Đường dẫn chứa file
+ full_path: Đường dẫn tuyệt đối chứa file

Ngoài ra còn các thông số, tên,phần mở rộng,chiều rộng,chiều cao…
Kết thúc bài viết: Qua bài này các bạn đã biết được cách tải 1 file lên server trong CodeIgniter,dựa vào bài này các bạn có thể làm các chức năng như ảnh minh họa cho bài viết, ảnh minh họa cho sản phẩm.Sang bài sau chúng ta sẽ thực hành sang tải nhiều file trong CodeIgniter



06/09/2014
Written by nobitacnt

Trong bài viết không tránh khỏi những câu từ chưa chính xác,mong nhận được sự góp ý để website hoàn thiện hơn.Nếu thấy bài viết có ích với bạn hãy like và share để ủng hộ nhé :D.

Bài viết chùng chuyên mục

Gửi bình luận

Giới thiệu

Mình tạo ra blog này với mong muốn chia sẻ và học hỏi kinh nghiệm trong quá trình thiết kế website. Website đang trong quá trình phát triển chân thành cảm ơn mọi sự góp ý của các bạn để làm cho website ngày càng hoàn thiên.

DMCA.com Protection Status
Theo dõi qua Email

Tổng hợp các bài viết về

Hoc php - CodeIgniter Framework - Laravel Framework - PHP va MYSQL