Ngu ngơ học làm web (108) - Upload tập tin trong PHP

Tiếp theo của: Ngu ngơ học làm web (107) - PHP Data Object – prepared statement
-----

Phần 108. Upload tập tin trong PHP


Trong clip số 16 của thầy Nguyễn Anh Tuấn có phần upload tập tin, nên sẽ tìm hiểu về cách upload một tập tin lên web server.

Cùng đọc và làm theo hướng dẫn của tác giả Trần Nam tại đây: http://kienthucweb.net/huong-dan-lap-trinh-xu-ly-upload-file-trong-php.html

Ghi lại một số ý để tiện tham khảo.

Bật chức năng cho phép upload tập tin của PHP:

- Mở tập tin php.ini

- Thiết lập cho hàng file_uploads giá trị là On, “file_upload = On”

Tạo một form, trong đó có chức năng upload tập tin.

            <form action="upload.php" method="POST" enctype="multipart/form-data">
                        Tập tin: <input type="file" name="uploadFile"><br>
                        <input type="submit" value="Tải lên">
            </form>

Lưu ý: form phải có thêm thuộc tính enctype=“multipart/form-data”. Enctype là viết tắt của encoded type.

Chưa biết cách làm sao để chuyển “Choose File và No file chosen” ở phần hiển thị sang tiếng Việt.

Ở ví dụ này, sau khi người dùng chọn một tập tin và bấm nút “Tải lên”, trang upload.php sẽ nhận được các thông tin của tập tin vừa được gửi, các thông tin này chứa trong biến $_FILES, gồm:

- $_FILES[‘uploadFile][‘name’]: tên tập tin

- $_FILES[‘uploadFile][‘type’]: định dạng của tập tin

- $_FILES[‘uploadFile][‘name’]: kích thước của tập tin, tính bằng byte

Các bước xử lý khi upload một tập tin gồm:

- Kiểm tra biến $_POST xem người dùng đã bấm nút “Tải lên” chưa?

- Kiểm tra biến $_FILES xem người dùng đã chọn tập tin ở máy tính chưa?

- Kiểm soát loại tập tin tải lên, để đảm bảo an toàn cho ứng dụng.

- Chuyển tập tin ở nơi chứa tạm về vị trí mong muốn.

Ví dụ sau chỉ cho phép người dùng tải tập tin ảnh, có kích thước không vượt quá 2MB.

Cần tạo sẵn thư mục images trên web server. Ở ví dụ này, thư mục images cùng cấp với tập tin upload.php.

Lưu lại đoạn mã để tham khảo:

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Upload file</title>
</head>
<?php
            if(isset($_POST['submit'])){ //Đã bấm submit
                        if($_FILES['uploadFile']['name'] != NULL){ //Đã chọn tập tin
                                    //Tiến hàng upload tập tin
                                    if($_FILES['uploadFile']['type'] == 'image/jpeg'
                                    || $_FILES['uploadFile']['type'] == 'image/png'
                                    || $_FILES['uploadFile']['type'] == 'image/gif'){
                                                //Là tập tin ảnh
                                                if($_FILES['uploadFile']['size'] > 2097152){
                                                            echo 'Tập tin không được lớn hơn 2MB!';
                                                }else{
                                                            //Tập tin hợp lệ, tiến hành upload
                                                            $path = 'images/'; //Thư mục sẽ chứa các tập tin
                                                            $tmp_name = $_FILES['uploadFile']['tmp_name']; //Lấy đường dẫn tạm của tập tin
                                                            $name = $_FILES['uploadFile']['name'];
                                                            $type = $_FILES['uploadFile']['type'];
                                                            $size = $_FILES['uploadFile']['size'];
                                                            //Chuyển tập tin từ thư mục tạm về thư mục mong muốn
                                                            move_uploaded_file($tmp_name, $path.$name);
                                                            echo 'Tải tập tin thành công! <br>';
                                                            echo 'Tên tập tin: '.$name.'<br>';
                                                            echo 'Định dạng: '.$type.'<br>';
                                                            echo 'Kích thước: '.$size.' MB';
                                                }
                                    }else {
                                                echo 'Tập tin phải là hình ảnh!';
                                    }
                        }else{
                                    echo 'Vui lòng chọn tập tin!';
                        }
            }
?>
<body>
            <form action="upload.php" method="POST" enctype="multipart/form-data">
                        Tập tin: <input type="file" name="uploadFile" id="uploadFile" text="HI"><br>
                        <input type="submit" value="Tải lên" name="submit">
            </form>
</body>

</html>
-----------
Cập nhật 20/2/2017
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web