Upload file trong PHP là quá trình sử dụng ngôn ngữ PHP viết chương trình tải lên các file từ máy tính của họ lên web server. Điều này cho phép người dùng chia sẻ và cung cấp dữ liệu như hình ảnh, video, văn bản, và nhiều loại file khác lên website hoặc ứng dụng của bạn. Điều này mở ra nhiều cơ hội để tạo ra các tính năng tải lên file động và tùy chỉnh trong các ứng dụng web của bạn. Hãy cùng Vietnix tham khảo thêm về chủ đề Upload file trong PHP qua bài viết dưới đây.
Upload file trong PHP là gì?
Sẽ có thắc mắc rằng làm thế nào các website xây dựng hệ thống upload file bằng PHP? Ngoài ra người dùng có thể upload các loại file nào? Quá trình upload file thường được thực hiện thông qua một giao diện web, cho phép người dùng chọn và gửi file từ trình duyệt của họ. Trên phía server, PHP cung cấp các công cụ và hàm để xử lý và lưu trữ file đã được tải lên. Kiểu file, loại file sẽ do người phát triển hệ thống/quản lý server chỉ định.
Điều kiện upload file
Để có thể chạy lệnh PHP cho tính năng này, bạn cần có một server. Vì vậy cần đảm bảo đã cài đặt XAMPP server hoặc WAMP trên máy hệ Windows của mình.
HTML code snipet: đoạn source code HTML dưới đây là cho HTML form để upload lên server. Trong tag HTML<form>, bạn cần dùng “enctype=’multipart/form-data” là dạng mã hóa cho phép file gửi qua phương thức POST. Nếu không có mã hóa này, các file sẽ không thể gửi đi.
Đầu tiên người dùng tạo 1 file có tên index.html cùng đoạn script sau:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>File Upload Form</title>
</head>
<body>
<form action="hello.php" method="post" enctype="multipart/form-data">
<!--multipart/form-data ensures that form data is going to be encoded as MIME data-->
<h2>Upload File</h2>
<label for="fileSelect">Filename:</label>
<input type="file" name="photo" id="fileSelect">
<input type="submit" name="submit" value="Upload">
<!-- name of the input fields are going to be used in our php script-->
<p><strong>Note:</strong>Only .jpg, .jpeg, .png formats allowed to a max size of 2MB.</p>
</form>
</body>
</html>
Tiếp theo bạn viết script PHP để xử lý hệ thống upload file có tên ví dụ như hello.php (có thể đặt tên khác tuỳ ý).
<?php
// Check if the form was submitted
if($_SERVER["REQUEST_METHOD"] == "POST")
{
// Check if file was uploaded without errors
if (isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0)
{
$allowed_ext = array("jpg" => "image/jpg",
"jpeg" => "image/jpeg",
"gif" => "image/gif",
"png" => "image/png");
$file_name = $_FILES["photo"]["name"];
$file_type = $_FILES["photo"]["type"];
$file_size = $_FILES["photo"]["size"];
// Verify file extension
$ext = pathinfo($file_name, PATHINFO_EXTENSION);
if (!array_key_exists($ext, $allowed_ext))
die("Error: Please select a valid file format.");
// Verify file size - 2MB max
$maxsize = 2 * 1024 * 1024;
if ($file_size > $maxsize)
die("Error: File size is larger than the allowed limit of 2MB");
// Verify MYME type of the file
if (in_array($file_type, $allowed_ext))
{
// Check whether file exists before uploading it
if (file_exists("upload/".$_FILES["photo"]["name"]))
echo $_FILES["photo"]["name"]." already exists!";
else
{
move_uploaded_file($_FILES["photo"]["tmp_name"],
"uploads/".$_FILES["photo"]["name"]);
echo "Your file uploaded successfully.";
}
}
else
{
echo "Error: Please try again!";
}
}
else
{
echo "Error: ". $_FILES["photo"]["error"];
}
}
?>
Trong đoạn script trên, một khi bạn submit form, bạn có thể truy cập mảng superglobal của PHP tên là $_FILE. Ngoài ra còn có nhiều chức năng khác hoạt động với vai trò chính.
Sau đó khởi chạy file index.html trước theo đường dẫn có dạng như sau:
http://localhost/(tên folder có chứa file index)/index.html
Người dùng sẽ gõ tên folder có chứa file index.html vào đường dẫn. Bạn sẽ tiếp tục chọn file cần upload, script sẽ kiểm tra phương thức request của server, nếu đúng là POST thì tiến trình sẽ tiếp tục hoặc hê thống báo lỗi về cho người dùng.
Sau đó script truy cập mảng $_FILES để lấy tên file, kích thước và loại tệp. Khi bạn nhận được những mẩu thông tin đó, bạn sẽ xác thực kích thước và loại tệp. Cuối cùng, hãy tìm kiếm trong thư mục chứa file sẽ được upload để kiểm tra xem file đã tồn tại hay chưa. Nếu không, sử dụng move_uploaded_file()
để di chuyển tệp từ vị trí tạm thời sang thư mục mong muốn trên máy chủ và hoàn tất.
Lời kết
Vietnix hy vọng nội dung bài viết trên đã giúp bạn hiểu rõ hơn về Upload file trong PHP. Ngoài ra, bạn cũng có thể tham khảo thêm các bài viết khác tại vietnix.vn để hiểu hơn về lập trình, chúc bạn thành công!