PHP File Upload sử dụng như thế nào ?

PHP File Upload cho phép bạn tải lên các file đơn hoặc nhiều file thông qua vài dòng mã. Điều này giúp cho việc tải lên tệp tin dễ dàng hơn và cung cấp khả năng kiểm soát đầy đủ về việc tải lên tệp tin thông qua xác thực PHP và các chức năng hoạt động tệp tin.

Lập Trình Viên mời bạn cùng tham khảo chi tiết nội dung bên dưới. Bài viết này nằm trong chuyên đề hướng dẫn PHP từ cơ bản đến nâng cao tại dự án Phát Triển Website.

PHP File Upload là gì

Để hiểu được PHP File Upload là gì, chúng ta cần phải biết về hàm $_FILES trong PHP. Hàm này chứa tất cả thông tin của tệp tin bao gồm: tên tệp tin, loại MIME của tệp tin, kích thước của tệp tin (theo byte), tên tệp tạm thời và các lỗi liên quan đến tệp tin.

PHP $_FILES

Hàm toàn cầu $_FILES chứa thông tin về tệp tin. Bằng cách sử dụng hàm $_FILES, chúng ta có thể lấy được tên tệp tin, loại tệp, kích thước của tệp tin (theo byte), tên tệp tạm thời và các lỗi liên quan đến tệp tin.

$_FILES[‘filename’][‘name’]

$_FILES[‘filename’][‘name’] trả về tên tệp tin.

$_FILES[‘filename’][‘type’]

$_FILES[‘filename’][‘type’] trả về loại MIME của tệp tin.

$_FILES[‘filename’][‘size’]

$_FILES[‘filename’][‘size’] trả về kích thước của tệp tin (theo byte).

$_FILES[‘filename’][‘tmp_name’]

$_FILES[‘filename’][‘tmp_name’] trả về tên tệp tạm thời của tệp tin đã được lưu trữ trên máy chủ.

$_FILES[‘filename’][‘error’]

$_FILES[‘filename’][‘error’] trả về mã lỗi liên quan đến tệp tin.

move_uploaded_file() function

Hàm move_uploaded_file() cho phép di chuyển tệp tin đã tải lên đến một vị trí mới. Hàm này kiểm tra nội bộ xem tệp tin đã được tải lên qua yêu cầu POST hay chưa và di chuyển tệp tin nếu nó đã được tải lên qua yêu cầu POST.

PHP File Upload Example

<?php
if(isset($_POST['submit'])){
    $file_name = $_FILES['filename']['name'];
    $file_type = $_FILES['filename']['type'];
    $file_size = $_FILES['filename']['size'];
    $file_tmp_name = $_FILES['filename']['tmp_name'];
    $file_error = $_FILES['filename']['error'];
    
    move_uploaded_file($file_tmp_name,"uploads/".$file_name);
    echo "Tệp tin đã được tải lên thành công";
    echo "<br>";
    echo "Đường dẫn lưu trữ: uploads/".$file_name;
}
?>

Hướng dẫn PHP File Upload

Để tải lên các file bằng PHP, chúng ta cần tạo một biểu mẫu HTML với thuộc tính enctype="multipart/form-data" và phương thức POST. Sau đó, chúng ta có thể sử dụng hàm $_FILES để lấy thông tin của tệp tin được tải lên và sử dụng hàm move_uploaded_file() để di chuyển tệp tin đến vị trí mới.

Để triển khai PHP File Upload, bạn cần sử dụng các hàm sau:

  • $_FILES: Một mảng chứa thông tin về các tệp đã được tải lên.
  • move_uploaded_file(): Di chuyển tệp tải lên đến một vị trí mới.

Hàm $_FILES

Mảng $_FILES chứa thông tin về tất cả các tệp đã được tải lên. Mỗi tệp được lưu trữ trong một mảng con. Mảng con này có các khóa sau:

  • name: Tên của tệp.
  • type: Kiểu MIME của tệp.
  • size: Kích thước của tệp, tính bằng byte.
  • tmp_name: Đường dẫn đến tệp tạm thời trên máy chủ.
  • error: Mã lỗi tải lên tệp.

Hàm move_uploaded_file()

Hàm move_uploaded_file() sẽ di chuyển tệp tải lên đến một vị trí mới. Hàm này có hai đối số:

  • $tmp_name: Đường dẫn đến tệp tạm thời trên máy chủ.
  • $destination: Đường dẫn đến vị trí mới của tệp.

Ví dụ

// Kiểm tra xem có tệp nào được tải lên hay không
if (isset($_FILES['file'])) {
    // Lấy thông tin về tệp
    $file = $_FILES['file'];

    // Kiểm tra lỗi tải lên
    if ($file['error'] === UPLOAD_ERR_OK) {
        // Di chuyển tệp đến vị trí mới
        move_uploaded_file($file['tmp_name'], 'uploads/' . $file['name']);
    } else {
        // Xử lý lỗi tải lên
    }
}

Lưu ý

  • Bạn nên kiểm tra mã lỗi tải lên để đảm bảo rằng tệp đã được tải lên thành công.
  • Bạn nên sử dụng hàm chmod() để thay đổi quyền truy cập của tệp tải lên.

Một số ví dụ về cách triển khai PHP File Upload

// Kiểm tra xem có tệp nào được tải lên hay không
if (isset($_FILES['file'])) {
    // Lấy thông tin về tệp
    $file = $_FILES['file'];

    // Kiểm tra lỗi tải lên
    if ($file['error'] === UPLOAD_ERR_OK) {
        // Di chuyển tệp đến vị trí mới
        move_uploaded_file($file['tmp_name'], 'uploads/' . $file['name']);
    } else {
        // Xử lý lỗi tải lên
    }
}
// Chỉ cho phép tải lên hình ảnh
if (isset($_FILES['file'])) {
    $file = $_FILES['file'];

    // Kiểm tra lỗi tải lên
    if ($file['error'] === UPLOAD_ERR_OK && $file['type'] === 'image/jpeg') {
        // Di chuyển tệp đến vị trí mới
        move_uploaded_file($file['tmp_name'], 'uploads/' . $file['name']);
    } else {
        // Xử lý lỗi tải lên
    }
}
// Thay đổi quyền truy cập của tệp tải lên
if (isset($_FILES['file'])) {
    $file = $_FILES['file'];

    // Kiểm tra lỗi tải lên
    if ($file['error'] === UPLOAD_ERR_OK) {
        // Di chuyển tệp đến vị trí mới
        move_uploaded_file($file['tmp_name'], 'uploads/' . $file['name']);

        // Thay đổi quyền truy cập của tệp
        chmod('uploads/' . $file['name'], 0644);
    } else {
        // Xử lý lỗi tải lên
    }
}

Ưu và Nhược điểm PHP File Upload

Ưu điểm:

  • Cho phép tải lên nhiều tệp tin.
  • Tự động kiểm tra kiểu MIME của tệp tin để đả bảo rằng tệp tin đã được tải lên là loại tệp tin đúng.
  • Cung cấp khả năng kiểm soát đầy đủ về việc tải lên tệp tin thông qua xác thực PHP và các chức năng hoạt động tệp tin.

Nhược điểm:

  • Kích thước của tệp tin tải lên có thể bị giới hạn bởi cấu hình máy chủ, điều này có thể gây ảnh hưởng đến quá trình tải lên các tệp tin lớn.
  • Có thể dễ dàng bị tấn công bởi các hacker nếu không được bảo vệ đúng cách.

Lời khuyên PHP File Upload

Để tăng tính bảo mật trong quá trình tải lên tệp tin, chúng ta cần phải sử dụng các hàm để kiểm tra các loại tệp tin được tải lên, giới hạn kích thước tệp tin, kiểm tra lỗi và mã hóa tên tệp tin để tránh tấn công từ phía hacker.

Kết luận

Trong bài viết này, chúng ta đã tìm hiểu về PHP File Upload là gì và cách sử dụng các hàm $_FILES, move_uploaded_file() để tải lên tệp tin bằng PHP. Chúng ta cũng đã tìm hiểu về ưu và nhược điểm của PHP File Upload cùng với một số lời khuyên để tăng tính bảo mật trong quá trình tải lên tệp tin. Hy vọng bài viết này sẽ giúp ích cho bạn trong việc tải lên tệp tin bằng PHP. 

Tôi cần phải lưu trữ tệp tin được tải lên ở đâu?

Chúng ta có thể lưu trữ tệp tin được tải lên ở bất kỳ thư mục nào trong hệ thống máy chủ.

Tôi cần phải kiểm tra loại tệp tin nào được tải lên?

Để kiểm tra loại tệp tin được tải lên, chúng ta có thể sử dụng hàm mime_content_type().

Tôi có thể tải lên nhiều tệp tin cùng lúc không?

Có, chúng ta có thể tải lên nhiều tệp tin cùng lúc bằng cách sử dụng thuộc tính multiple trong thẻ input trong biểu mẫu HTML.

Kích thước cho phép của tệp tin là bao nhiêu?

Kích thước cho phép của tệp tin phụ thuộc vào cấu hình máy chủ. Thường thì kích thước cho phép của tệp tin là 2MB hoặc 8MB.

Làm sao để giới hạn kích thước tệp tin được tải lên?

Chúng ta có thể giới hạn kích thước tệp tin được tải lên bằng cách sử dụng thuộc tính max_file_size trong biểu mẫu HTML và kiểm tra kích thước tệp tin trong mã PHP.