/ / Php cơ bản / Comment (0)

Upload file trong PHP

Qua bài trước mình đã giới thiệu cho các bạn về Form và các phương thức POST và GET trong form,sang bài này chúng ta sẽ thực hành sang chức năng rất quan trọng đó chính là Upload file trong PHP.Đây là chức năng mà hầu như website nào cũng cần phải có.Ví dụ như khi chúng ta viết bài,bán sản phẩm thì đều cần ảnh minh họa cho bài viết hoặc sản phẩm.

– Để upload được file, chúng ta cần thêm thuộc tính enctype=”multipart/form-data” cho form, ta dùng thẻ input type=”file” để upload file

– Sau đây chúng ta sẽ tạo 1 form để thực hiện chức năng tải file lên:

<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="upload.php" 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à sẽ được kết quả như sau:

Form upload file

Form upload file

– Các bạn thấy form trên có thuộc tính action="upload.php",như vậy khi form được submit toàn bộ dữ liệu trong form sẽ được gửi tới trang upload.php theo phương thức POST
Bây giờ chúng ta sẽ thực hiện viết code xử lý dữ liệu trong file upload.php như sau:

<?php
if(isset($_POST['submit']))
{
      //thực hiện upload
}
else
{
      echo "Vui lòng chọn hình ảnh trước";
}
?>

+ Hàm isset() là hàm kiểu tra sự tồn tại của biến nào đó, Với đoạn code trên trước tiên chúng ta cần kiểm tra xem người dùng đã ấn nút submit form chưa thông qua câu điều kiện isset($_POST['submit'])
– Để upload file từ máy lên hệ thống ta cần sử dụng hàm:

move_uploaded_file(tên_file_tạm, đường dẫn tới hệ thống).

– Khi thực hiện upload hệ thống sẽ tự sinh ra 1 biến môi trường có tên là $_FILES[‘image'] ,đây là biến chứa mảng thông tin của file upload lên nó bao gồm các thông tin sau:

  1. $_FILES['image']['name']: tên file
  2. $_FILES['image'][‘tmp_name']: tên file tạm (sẽ mất đi khi upload thành công),và đây chính là tham số thứ nhất đựoc truyền vào trong hàm move_uploaded_file ở trên
  3. $_FILES['image']['type']: Kiểu của file,dựa vào biến này để kiểm tra các file được phép tải lên
  4. $_FILES['image']['size']: kích thước của file (byte),dựa vào biến này để kiểm tra dung lượng tối đa được phép tải lên

– Để thực hiện kiểm tra điều kiện file tải lên chỉ là file ảnh ta có thể dựa vào biến $_FILES['image']['type'] và kiểm tra như sau:

<?php
  if($_FILES['file']['type'] == "image/jpeg"
      || $_FILES['file']['type'] == "image/png"
      || $_FILES['file']['type'] == "image/gif"){
      // là file ảnh
      // Thực hiện upload
  }else{
      // không phải file ảnh
      echo "Kiểu file không hợp lệ";
  }
?>

– Để thêm điều kiện giới hạn dung lượng tối đa của file upload lên ta dựa vào biến $_FILES['image']['size'] và sẽ kiểm tra như sau,ví dụ ta giới hạn dung lượng tối đa là 1MB ta kiểm tra như sau (ví file size tính theo byte lên ta đổi (1MB = 1*1024 kb * 1024 bytes = 1048576) ):

<?php
  if($_FILES['file']['size'] > 1048576){
     echo "File không được lớn hơn 1mb";
  }else{
     //dung lượng hợp lệ,thực hiện code upload
  }

Như vậy sau khi đã có đầy đủ các thông tin cho việc tải file lên chúng ta sẽ có đoạn code đầy đủ như sau:

<?php
if(isset($_POST['submit'])){ // Người dùng đã ấn submit
    if($_FILES['file']['name'] != NULL){ // Đã chọn file
        // Tiến hành code upload file
        if($_FILES['file']['type'] == "image/jpeg"
        || $_FILES['file']['type'] == "image/png"
        || $_FILES['file']['type'] == "image/gif"){
        // là file ảnh
        // Tiến hành code upload   
            if($_FILES['file']['size'] > 1048576){
                echo "File không được lớn hơn 1mb";
            }else{
                // file hợp lệ, tiến hành upload
                $path = 'upload/'.$_FILES['file']['name']; // Đường dẫn chưa file upload
                // Gọi hàm upload file
                move_uploaded_file($_FILES['file']['tmp_name'], $path);
                echo "Upload thành công <br />";
                echo "Tên file : ".$name."<br />";
                echo "Kiểu file : ".$_FILES['file']['type']."<br />";
                echo "File size : ".$_FILES['file']['size'];
           }
        }else{
           // không phải file ảnh
           echo "Kiểu file không hợp lệ";
        }
   }else{
        echo "Vui lòng chọn file";
   }
}
?>

Kết thúc bài viết: Qua bài này các bạn đã có thể tự tạo ra chức năng upload ảnh minh họa cho sản phẩm rồi,các bạn có thể lưu lại tên file ảnh vào CSDL để sau này hiển thị ra.Sang bài sau mình sẽ hướng dẫn cho các bạn 1 phần rất quan trọng trong lập trình php,đó chính là mảng.



03/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