Hướng dẫn code Upload File trong lập trình PHP

04:08:40 - 16/05/2018 - admin

Ở những bài học trước mình đã đưa đến thông tin và hướng dẫn với những bài thực hành hàm trong PHP tốt nhất. Upload File là một hàm khá dễ và đơn giản, hôm nay hãy cùng tìm hiểu về nó nhé !

Trước khi học bài này các bạn có thể xem qua các bài trước mình đã viết về lập trình PHP:

Code File upload PHP

Code File upload trong PHP

Còn trong bài hướng dẫn code file upload trong PHP này có 3 bước cơ bản để thực hiện upload file trong PHP đó là:

Bước 1: Sử dụng form HTML tĩnh để việc upload file trở nên đơn giản.

Form ví dụ như sau:

<! DOCTYPE html>

<html  lang = “vi” >

<head>

   <meta  charset = “UTF-8” >

   <title> Biểu mẫu tải lên tệp </ title>

</ head>

<body>

   <form  action = “upload-manager.php”  method = “post” enctype = “multipart / form-data” >

       <h2> Tải lên tệp </ h2>

       <label for = “fileSelect” > Tên tệp: </ label>

       <input type = “file”  name = “ảnh” id = “fileSelect”

       <input type = “submit”  name = “submit” value = “Tải lên” >

       <p> <strong> Lưu ý: </ strong> Chỉ các định dạng .jpg, .jpeg, .gif, .png được phép cho kích thước tối đa là 5 MB. </ p>

   </ form>

</ body>

</ html>

Trong bước này bạn cần lưu ý: phải có đầy đủ phương thức bài đăng và phải chứa enctype=”multipart/form-data”thuộc tính bên cạnh trường tệp. Nó có tác dụng đảm bảo rằng dữ liệu biểu mẫu được mã hóa dưới dạng dữ liệu MIME mpartitpart – được yêu cầu để tải lên một lượng lớn dữ liệu nhị phân, chẳng hạn như tệp.

Bước 2: Bắt đầu tiến hành upload file trong PHP

Viết code như sau:

<?php

// Kiểm tra phương thức gửi form đi có phải là POST hay ko ?

if($_SERVER[“REQUEST_METHOD”] == “POST”){

   // Kiểm tra quá trình upload file có bị lỗi gì không ?

   if(isset($_FILES[“photo”]) && $_FILES[“photo”][“error”] == 0){

    // Mảng chưa định dạng file cho phép

       $allowed = array(“jpg” => “image/jpg”, “jpeg” => “image/jpeg”, “gif” => “image/gif”, “png” => “image/png”);

       // Lấy thông tin file bao gồm tên file, loại file, kích cỡ file

       $filename = $_FILES[“photo”][“name”];

       $filetype = $_FILES[“photo”][“type”];

       $filesize = $_FILES[“photo”][“size”];

   

       // Kiểm tra định dạng file .jpg, png,…

       $ext = pathinfo($filename, PATHINFO_EXTENSION);

       // Nếu không đúng định dạng file thì báo lỗi

       if(!array_key_exists($ext, $allowed)) die(“Lỗi : Vui lòng chọn đúng định dang file.”);

   

       // Cho phép kích thước tối đa của file là 5MB

       $maxsize = 5 * 1024 * 1024;

       // Nếu kích thước lớn hơn 5MB thì báo lỗi

       if($filesize > $maxsize) die(“Lỗi : Kích thước file lớn hơn giới hạn cho phép”);

   

       // Kiểm tra file ok hết chưa

       if(in_array($filetype, $allowed)){

           // Kiểm tra xem file đã tồn tại chưa, nếu rồi thì báo lỗi, không thì tiến hành upload

           if(file_exists(“upload/” . $_FILES[“photo”][“name”])){

               echo $_FILES[“photo”][“name”] . ” đã tồn tại”;

           } else{

            // Hàm move_uploaded_file sẽ tiến hành upload file lên thư mục upload

               move_uploaded_file($_FILES[“photo”][“tmp_name”], “upload/” . $_FILES[“photo”][“name”]);

               // Thông báo thành công

               echo “Upload file thành công”;

           }

       } else{

           echo “Lỗi : Có vấn đề xảy ra khi upload file”;

       }

   } else{

       echo “Lỗi: ” . $_FILES[“photo”][“error”];

   }

}

?>

Trong đó:

  • $_FILES[“photo”][“name”]: Tên gốc của tệp, bao gồm phần mở rộng tệp. Nó không bao gồm đường dẫn tệp.
  • $_FILES[“photo”][“type”]: Chỉ định loại MIME của tệp.
  • $_FILES[“photo”][“size”]: Chỉ định kích thước tệp theo byte.
  • $_FILES[“photo”][“tmp_name”]: Tên tạm thời bao gồm đường dẫn đầy đủ được gán cho tệp khi tệp đã được tải lên máy chủ.
  • $_FILES[“photo”][“error”]: Lỗi hoặc mã trạng thái được liên kết với tệp tải lên, ví dụ: sẽ là 0, nếu không có lỗi.

Nếu bạn chưa nắm vữa các bước trên và các câu lệnh PHP ở trong bước 2 thì tôi khuyên các bạn nên tham gia một khóa học lập trình php để nâng cao kiến thức của mình.

Bước 3: Tổng hợp toàn bộ đoạn viết code upload file trong PHP như sau:

<!DOCTYPE html>

<html lang=”en”>

<head>

   <meta charset=”UTF-8″>

   <title>Form upload file trong PHP</title>

</head>

<body>

<?php

// Kiểm tra phương thức gửi form đi có phải là POST hay ko ?

if($_SERVER[“REQUEST_METHOD”] == “POST”){

   // Kiểm tra quá trình upload file có bị lỗi gì không ?

   if(isset($_FILES[“photo”]) && $_FILES[“photo”][“error”] == 0){

    // Mảng chưa định dạng file cho phép

       $allowed = array(“jpg” => “image/jpg”, “jpeg” => “image/jpeg”, “gif” => “image/gif”, “png” => “image/png”);

       // Lấy thông tin file bao gồm tên file, loại file, kích cỡ file

       $filename = $_FILES[“photo”][“name”];

       $filetype = $_FILES[“photo”][“type”];

       $filesize = $_FILES[“photo”][“size”];

   

       // Kiểm tra định dạng file .jpg, png,…

       $ext = pathinfo($filename, PATHINFO_EXTENSION);

       // Nếu không đúng định dạng file thì báo lỗi

       if(!array_key_exists($ext, $allowed)) die(“Lỗi : Vui lòng chọn đúng định dang file.”);

   

       // Cho phép kích thước tối đa của file là 5MB

       $maxsize = 5 * 1024 * 1024;

       // Nếu kích thước lớn hơn 5MB thì báo lỗi

       if($filesize > $maxsize) die(“Lỗi : Kích thước file lớn hơn giới hạn cho phép”);

   

       // Kiểm tra file ok hết chưa

       if(in_array($filetype, $allowed)){

           // Kiểm tra xem file đã tồn tại chưa, nếu rồi thì báo lỗi, không thì tiến hành upload

           if(file_exists(“upload/” . $_FILES[“photo”][“name”])){

               echo $_FILES[“photo”][“name”] . ” đã tồn tại”;

           } else{

            // Hàm move_uploaded_file sẽ tiến hành upload file lên thư mục upload

               move_uploaded_file($_FILES[“photo”][“tmp_name”], “upload/” . $_FILES[“photo”][“name”]);

               // Thông báo thành công

               echo “Upload file thành công”;

           }

       } else{

           echo “Lỗi : Có vấn đề xảy ra khi upload file”;

       }

   } else{

       echo “Lỗi: ” . $_FILES[“photo”][“error”];

   }

}

?>

   <form action=”form_upload.php” method=”post” enctype=”multipart/form-data”>

       <h2>Form Upload File PHP</h2>

       <label for=”fileSelect”>Tên file:</label>

       <input type=”file” name=”photo” id=”fileSelect”>

       <input type=”submit” name=”submit” value=”Upload file”>

       <p><strong>Ghi chú:</strong> Chỉ cho phép định dạng .jpg, .jpeg, .gif và kích thước tối đa tệp tin là 5MB.</p>

   </form>

</body>

</html>

Như vậy qua 3 bước đơn giản chúng ta đã hoàn thành việc tải tệp trong PHP. Còn rất nhiều những hàm cần thiết khác trong PHP các bạn cần biết và sử dụng, hãy theo dõi những bài học tiếp theo của chúng tôi nhé !

Tham khảo các bài học PHP khác tại đây

Chúc các bạn thành công !

Ý kiến bạn đọc

Bình luận qua Disqus Facebook