**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; ``` ![Screenshot (93)](https://hackmd.io/_uploads/Bymf2jyB6.png) # 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> ``` ![Screenshot (94)](https://hackmd.io/_uploads/rygfgnkB6.png) # 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> ``` ![Screenshot (95)](https://hackmd.io/_uploads/S1T8e21Ha.png) ![Screenshot (96)](https://hackmd.io/_uploads/Hkwtl31rp.png) # 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>&emsp; Return to Home Page => <a href="index.php">Home</a></p> </div> </body> </html> ``` ![Screenshot (97)](https://hackmd.io/_uploads/rkNpgh1ST.png)