PHP
PHP

Trang chủ

Tạo chương trình upload file trong PHP

PHP, viết tắt của Hypertext Preprocessor, là ngôn ngữ lập trình script phía máy chủ được thiết kế đặc biệt cho phát triển web. Điểm nổi bật của PHP so với các ngôn ngữ khác là khả năng tương thích với nhiều loại cơ sở dữ liệu và chạy mượt mà trên các máy chủ web. Tại Vietnix, chúng tôi không chỉ giới thiệu những khái niệm cơ bản về PHP mà còn cung cấp các ví dụ thực tế giúp bạn dễ dàng hiểu và áp dụng PHP vào việc phát triển website. Bên cạnh đó, Vietnix cũng thường xuyên cập nhật các bài viết mới về tính năng, mẹo và thủ thuật lập trình, giúp bạn giải quyết các thách thức phức tạp, từ đó không ngừng nâng cao và hoàn thiện kỹ năng lập trình của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
19/06/2024
4 phút đọc
Theo dõi Vietnix trên

Tạo chương trình upload file trong PHP

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.

Upload file trong PHP
Upload file trong PHP

Đ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.

final
Demo upload file trong PHP bằng XAMPP

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!

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn