**Web Upload file**
# upload_file.sql
Tạo database upload_file.sql
```
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
CREATE TABLE `files` (
`id` int(11) NOT NULL,
`filename` varchar(200) NOT NULL,
`filesize` int(11) NOT NULL,
`filetype` varchar(100) NOT NULL,
`upload_date` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
INSERT INTO `files` (`id`, `filename`, `filesize`, `filetype`, `upload_date`) VALUES
ALTER TABLE `files`
ADD PRIMARY KEY (`id`);
ALTER TABLE `files`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
COMMIT;
```

# connect.php
Tạo file kết nối tới database
```
<?php
$hostName = "localhost";
$dbUser = "root";
$dbPass = "";
$dbName = "upload_file";
$conn = mysqli_connect($hostName, $dbUser, $dbPass, $dbName);
if (!$conn)
{
die("Something went wrong!");
}
?>
```
# index.php
```
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.1/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
<title>File upload and download</title>
</head>
<body>
<div class="container mt-5">
<h2>Upload a file</h2>
<form action="upload.php" method="POST" enctype="multipart/form-data">
<div class="mb-3">
<label for="file" class="form-label">Select file</label>
<input type="file" class="form-control" name="file" id = "file">
</div>
<button type="submit" class="btn btn-primary">Upload file</button>
<br> <br>
<div>
<p>View Uploaded Files => <a href="view_file.php">View</a></p>
</div>
</form>
</div>
</body>
</html>
```

# upload.php
```
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Kiểm tra xem một tập tin tải lên có lỗi không
if (isset($_FILES["file"]) && $_FILES["file"]["error"] == 0) {
$target_dir = "uploaded_file/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
$file_type = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
// Kiểm tra xem tệp có được cho phép không
$allowed_types = array("jpg", "jpeg", "png", "gif", "pdf");
if (!in_array($file_type, $allowed_types)) {
echo "Sorry, only JPG, JPEG, PNG, GIF, and PDF files are allowed.";
} else {
// Di chuyển tệp đã tải lên vào thư mục được chỉ định
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
// Upload file thành công, lưu trữ thông tin vào database
$filename = $_FILES["file"]["name"];
$filesize = $_FILES["file"]["size"];
$filetype = $_FILES["file"]["type"];
require_once "connect.php";
// Chèn thông tin file vào database
$sql = "INSERT INTO files (filename, filesize, filetype) VALUES ('$filename', $filesize, '$filetype')";
if ($conn->query($sql) === TRUE) {
echo "The file " . basename($_FILES["file"]["name"]) . " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file: " . $conn->error;
}
$conn->close();
} else {
echo "Sorry, there was an error uploading your file.";
}
}
} else {
echo "No file was uploaded.";
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<div>
<p>View Uploaded Files => <a href="view_file.php">View</a></p>
</div>
<div>
<p>Return to Home Page => <a href="index.php">Home</a></p>
</div>
</body>
</html>
```


# view_file.php
```
<?php
require_once("connect.php");
//Fetch các file đã upload từ database
$sql = "SELECT *FROM files";
$result = $conn->query($sql);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Uploaded files</title>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.1/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-5">
<h2>Uploaded Files</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>File Name</th>
<th>File Size</th>
<th>File Type</th>
<th>Download</th>
</tr>
</thead>
<tbody>
<?php
// Hiển thị các file đã upload và liên kết download
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$file_path = "uploaded_file/" . $row['filename'];
?>
<tr>
<td><?php echo $row['filename']; ?></td>
<td><?php echo $row['filesize']; ?> bytes</td>
<td><?php echo $row['filetype']; ?></td>
<td><a href="<?php echo $file_path; ?>" class="btn btn-primary" download>Download</a></td>
</tr>
<?php
}
} else {
?>
<tr>
<td colspan="4">No files uploaded yet.</td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
</body>
</html>
<?php
$conn->close();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<div>
<br>
<p>  Return to Home Page => <a href="index.php">Home</a></p>
</div>
</body>
</html>
```
