Trang chủ » PHP » $_files trong php

$_files trong php

Bài viết này mình sẽ hướng dẫn chi tiết các bạn cách sử dụng – cách upload files bằng: $_FILES trong php. Kéo xuống xem ngay nhé!!!

Mô tả biến $_files trong php

– Đây là 1 mảng kết hợp bởi các mục được tải lên hiện tại thông qua phương thức HTTP POST

Ví dụ kết quả trả về của 1 biến $_files:

Array
(
    [download] => Array
        (
            [name] => Array
                (
                    [file1] => MyFile.txt
                    [file2] => MyFile.jpg
                )
            [type] => Array
                (
                    [file1] => text/plain
                    [file2] => image/jpeg
                )
            [tmp_name] => Array
                (
                    [file1] => /tmp/php/php1h4j1o
                    [file2] => /tmp/php/php6hst32
                )
            [error] => Array
                (
                    [file1] => UPLOAD_ERR_OK
                    [file2] => UPLOAD_ERR_OK
                )
            [size] => Array
                (
                    [file1] => 123
                    [file2] => 98174
                )
        )
)

– Bạn có thể thấy kết quả trả về khi upload 2 files ở trên. Biến $_files trả về các thông tin kết quả như: “name”, “type”, “tmp_name”, “error”, “size” dưới dạng mảng.

Hướng dẫn upload files trong php

Với PHP thì việc bạn upload files lên server thì nó khá là dễ. Nhưng có 1 số lưu ý dành cho bạn: Đầu tiền, thì bạn cần kiểm tra cấu hình file php.ini 

Cấu hình file “php.ini” để upload

– Sau khi vào file php.ini thì bạn tìm đến dòng file_uploads xem có xuất hiện kết quả dưới đây hay không:

Cấu hình file php.ini để sử dụng $_files trong php
Cấu hình file php.ini để sử dụng $_files trong php

– Nếu không phải là “On” mà là “Off” thì bạn sửa lại thành “On” rồi lưu lại. Thường thì sẽ được cấu hình sẵn là “On”, nhưng bạn vẫn phải kiểm tra lại không trong quá trình code vấn đề mà phát sinh từ đây thì bạn sẽ phải mất rất nhiều thời gian mà không hiểu tại sao nó lỗi -_-

Tạo form upload files – HTMl

– Bạn cần tạo 1 file .html chứa đoạn code dưới đây:

<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>

Một số quy tắc mà bạn cần tuân theo đối với đoạn mẫu HTML ở trên:

  1. Đảm bảo form của bạn sử dụng phương thức post (method=”post”)
  2. Bạn cần phải thêm thuộc tính: enctype=”multipart/form-data” – Nó chỉ định loại nội dung (content-type) khi bạn submit form (upload files)
  3. Nếu bạn không tuân thủ theo quy tắc (1) và (2) thì không thể tiến hành upload files được, chú ý nhé.
  4. Bạn cần có thẻ input với thuộc tính type=”file” để có nút chọn file cần upload. Như hình dưới đây:
    Thẻ input có thuộc tính type="file"
    Thẻ input có thuộc tính type=”file”

     
  5. Lưu ý: Thuộc tính action=”upload.php” của thẻ <form> thì khi upload files thì dữ liệu sẽ gửi đến 1 file có tên là “upload.php”. Vậy làm sao để gửi? Thì chính thẻ input ở dưới có thuộc tính type=”submit” – Khi bạn click vào nó thì nó sẽ thực hiện quá trình này.

Tạo file upload bằng PHP

Ở đây mình sẽ ví dụ upload files ở đây là hình ảnh

– Bạn cần tạo thêm 1 file “upload.php” để chứa code upload files. Như dưới đây:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}
?>

Tham khảo các hàm sử dụng: 

Giải thích đoạn code php trên:

  • $target_dir = “uploads/” – Chỉ định 1 thư mục (folder) files được tải lên
  • $target_file – chỉ định đường dẫn của files sẽ được tải lên
  • $uploadOk=1 – Dùng để kiểm tra trạng thái upload files
  • $imageFileType -Lấy về kiểu file, định dạng file (jpg, png, txt…)
  • Cuối cùng, kiểm tra xem files upload lên có phải là ảnh hay không. Nếu là ảnh thì sẽ trả về “File is an image…”, Nếu không sẽ trả về “File is not an image”.

Lưu ý: Bạn sẽ cần tạo một thư mục mới có tên “uploads” trong thư mục chứa file “upload.php”. Các tập tin tải lên sẽ được lưu ở đó.

Kiểm tra xem file đã tồn tại chưa?

– Nếu tên file đã tồn tại thì “$uploadOk = 0” và xuất ra màn hình: “Sorry, file already exists.”

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

Giới hạn kích thước file upload

– Nếu size của file upload lên có kích thước lớn hơn 500kb thì “$uploadOk = 0” và xuất ra màn hình “Sorry, your file is too large.”

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

Giới hạn kiểu – định dạng file upload

– Đoạn code dưới đây chỉ cho upload các định dạng: JPG, JPEG, PNG và GIF. Nếu file upload lên không thuộc 1 trong 4 định dạng trên thì “$uploadOk = 0” và xuất ra màn hình “Sorry, only JPG, JPEG, PNG & GIF files are allowed.”

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

Trọn bộ code mẫu upload files PHP

– Sau khi hoàn thành các bước trên thì bạn sẽ có 1 file “upload.php” như dưới đây:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}
// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

Mong răng qua bài hướng dẫn của mình thì các bạn có thể dễ dàng làm các module sử dụng upload files. Chúc các bạn 1 ngày vui vẻ <3

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *