/ / Codeigniter / Comment (0)

Upload nhiều file trong Codeigniter

Qua bài trước mình đã giới thiệu cho các bạn thư viện upload trong CodeIgniter,các bạn đã có thể thực hiện chức năng tải 1 ảnh minh họa cho sản phẩm hoặc bài viết nào đó.Những website hiện tại họ đều có chức năng cho phép tải nhiều file lên,như chức năng tải nhiều file ảnh kèm theo cho sản phẩm.
Điều kiện để thực hiện được bài này các bạn cần đọc trước bài viết:

  1. Upload file trong php
  2. Tìm hiểu thư viện Upload trong CodeIgniter.

Trước tiên chúng ta sẽ tạo from upload trong view với nội dung:

<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 />
                <label>Ảnh kèm theo:</label><input type="file"  id="image_list" name="image_list[]" multiple>
                <br />
                <input type="submit" class="button" value="Upload" name='submit' />
        </form>
   </body>
</html>

+ Vì form upload file lên trong form chúng ta vẫn phải thêm thuộc tính enctype="multipart/form-data"
+ Trong form này chúng ta có 2 thẻ input để lựa chọn file, 1 thẻ input name="image" cho phép tải ảnh minh họa sản phẩm,1 thẻ input name="image_list[]" cho phép tải nhiều file ảnh kèm theo,vì tải nhiều file lên tên file chúng ta phải đặt dưới dạng [] (mảng)
Và kết quả sẽ như sau:

Upload nhiều file trong CodeIgniter

Upload nhiều file trong CodeIgniter

– Với chức năng tải ảnh minh họa cho sản phẩm mình đã làm chi tiết trong bài viết trước,sang bài bài mình sẽ không làm lại nữa mà chỉ làm chức năng upload nhiều file

– Và chúng ta sẽ tạo file controller upload.php với nội dung sau:

<?php
class Upload extends MY_Controller
{
  function index()
  {
      if($this->input->post('submit'))
      {
         //Khai bao bien cau hinh upload
         $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
         //bien chua cac ten file upload
        $name_array = array();
        
        //lưu biến môi trường khi thực hiện upload
        $file  = $_FILES['image_list'];
        $count = count($file['name']);//lấy tổng số file được upload
        for($i=0; $i<=$count-1; $i++) {
             
              $_FILES['userfile']['name']     = $file['name'][$i];  //khai báo tên của file thứ i
              $_FILES['userfile']['type']     = $file['type'][$i]; //khai báo kiểu của file thứ i
              $_FILES['userfile']['tmp_name'] = $file['tmp_name'][$i]; //khai báo đường dẫn tạm của file thứ i
              $_FILES['userfile']['error']    = $file['error'][$i]; //khai báo lỗi của file thứ i
              $_FILES['userfile']['size']     = $file['size'][$i]; //khai báo kích cỡ của file thứ i
              //load thư viện upload và cấu hình
              $this->load->library('upload', $config);
              //thực hiện upload từng file
              if($this->upload->do_upload())
              {
                  //nếu upload thành công thì lưu toàn bộ dữ liệu
                  $data = $this->upload->data();
                  //in cấu trúc dữ liệu của các file
                 echo "<pre>";
                 print_r($data);
                 echo "</pre>";
              }     
         }
         
      }
      // Hien thi view
      $this->load->view('site/upload/index', $this->data);  
  }
}

+ Biến $_FILES['image_list'] chính là biến môi trường chứa thông tin của file upload lên server mà các bạn đã được đọc trong bài upload file trong php.
+ Hàm count là hàm lấy tổng số phần từ trong mảng,và nó có chức năng lấy tổng số file tải lên,lúc này chúng ta sẽ lặp toàn bộ các file tải lên thông qua vòng lặp for
+ Biến userfile mặc định trong CodeIgniter phải khai báo lên các bạn giữ nguyên tên biến này nhé.
– Và kết quả sau khi mình upload 2 file sẽ hiển thị thông tin 2 file như sau:

Array
(
    [file_name] => 31.png
    [file_type] => image/png
    [file_path] => D:/xampp/htdocs/ci/public/upload/user/
    [full_path] => D:/xampp/htdocs/ci/public/upload/user/31.png
    [raw_name] => 31
    [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"
)

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

-Ý nghĩa của các thông tin thì các bạn có thể xem lại bài trước nhé.
– Như vậy qua mỗi vòng lặp chúng ta đã thực hiện upload 1 file lên.Mỗi lần upload thành công các bạn có thể lấy được tên file ảnh tải lên và lưu vào trong CSDL
Kết thúc bài viết: Qua bài này mình đã hướng dẫn cho các bạn làm chức năng tải nhiều file trong CodeIgniter,dựa vào bài này các bạn hoàn toàn có thể làm chức năng tải nhiều ảnh kèm theo cho sản phẩm.
Sang bài sau mình sẽ hướng dẫn các bạn tìm hiểu sang thư viện giỏ hàng (cart),đây là thư viên rất quan trọng cho 1 website bán sản phẩm.



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