Thứ Năm, 29 tháng 9, 2016

Bài 8. PHP căn bản - Upload file trong PHP

Ở bài trước chúng ta đã tìm hiểu về form cơ bản, cách xử lý dữ liệu người dùng nhập vào ra làm sao và lấy dữ liệu nó như thế nào. Bài này chúng ta cùng tìm hiểu về upload file trong php lên server, một lần nữa chúng ta cùng xem lại form  upload nó có thêm những gì.
- Để 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 

- Tạo file form.php với nội dung như sau



- Tiếp theo ta sẽ kiểm tra xem người dùng đã nhấn nút submit hay chưa bằng cách kiểm tra sự tồn tại của biến $_POST['ok'], nếu người dùng đã nhấn submit rồi thì tiến hành kiểm tra xem họ đã chọn file hay chưa, nếu chưa chọn file thì báo lỗi

- Ta có thể lấy được tên file, kiểu file , cỡ file thông qua các biến :
File name : $_FILES['file']['name'];
File type : $_FILES['file']['type'];
File size : $_FILES['file']['size'];
1
2
3
4
5
6
7
8
9
<?php
  if(isset($_POST['ok'])){ // Người dùng đã ấn submit
     if($_FILES['file']['name'] != NULL){ // Đã chọn file
        // thực hiện công việc upload
     }else{
        echo "Vui lòng chọn file";
     }
  }
?>
- Khi người dùng đã chọn file thì tiến hành upload ? tùy theo yêu cầu của bài toán mà chúng ta tiến hành xây dựng chức năng cho nó, ví dụ yêu cầu đặt ra ở đây là chỉ được upload các file ảnh có kiểu file là jpg , png , gif và cỡ file không được lớn hơn 1mb 

- Chúng ta tiến hành kiểm tra  kiểu file xem có phù hợp hay không, nếu là file ảnh thì tiến hành kiểm tra xem cỡ file có phù hợp hay không và ngược lại thì báo lỗi file chọn không phải file ảnh

1
2
3
4
5
6
7
8
9
10
11
<?php
  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
  }else{
      // không phải file ảnh
      echo "Kiểu file không hợp lệ";
  }
?>
- Bước cuối cùng là xem file vừa chọn cỡ có nhỏ hơn 1mb không, file size ở đây được tính theo byte (1mb = 1*1024 kb * 1024 bytes) . Nếu cỡ file nhỏ hơn 1mb tiến hành upload file bằng hàm move_uploaded_file , file upload sẽ được lưu trong thư mục data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
  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 = "data/"; // file lưu vào thư mục data
     $tmp_name = $_FILES['file']['tmp_name'];
     $name = $_FILES['file']['name'];
     $type = $_FILES['file']['type'];
     $size = $_FILES['file']['size'];
     // Upload file
     move_uploaded_file($tmp_name,$path.$name);
     echo "File uploaded! <br />";
     echo "Tên file : ".$name."<br />";
     echo "Kiểu file : ".$type."<br />";
     echo "File size : ".$size;
  }
?>
- Và đây là toàn bộ code của phần upload file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
if(isset($_POST['ok'])){ // 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 = "data/"; // file sẽ lưu vào thư mục data
                $tmp_name = $_FILES['file']['tmp_name'];
                $name = $_FILES['file']['name'];
                $type = $_FILES['file']['type'];
                $size = $_FILES['file']['size'];
                // Upload file
                move_uploaded_file($tmp_name,$path.$name);
                echo "File uploaded! <br />";
                echo "Tên file : ".$name."<br />";
                echo "Kiểu file : ".$type."<br />";
                echo "File size : ".$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";
   }
}
?>
- Như vậy là chúng ta đã xây dựng xong code upload file với PHP, các bạn có thể download tại đây
Nguồn:http://phpandmysql.net/


EmoticonEmoticon