以下是一个简单的 PHP 文件上传和下载功能的示例代码:
文件上传代码(upload.php):
<!DOCTYPE html> <html> <head> <title>文件上传示例</title> </head> <body> <h1>文件上传示例</h1> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION)); // 检查文件是否为真正的文件 if (!is_uploaded_file($_FILES["fileToUpload"]["tmp_name"])) { echo "<p>请选择要上传的文件!</p>"; $uploadOk = 0; } // 检查文件是否已经存在 if (file_exists($target_file)) { echo "<p>文件已经存在!</p>"; $uploadOk = 0; } // 检查文件大小 if ($_FILES["fileToUpload"]["size"] > 5000000) { echo "<p>文件过大!</p>"; $uploadOk = 0; } // 允许特定的文件格式 if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" && $imageFileType != "pdf") { echo "<p>只允许上传 JPG, JPEG, PNG, GIF 和 PDF 格式的文件!</p>"; $uploadOk = 0; } // 如果通过了所有的检查,尝试将文件移动到指定的目录 if ($uploadOk) { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { echo "<p>文件 " . htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " 上传成功!</p>"; } else { echo "<p>上传文件时出现错误!</p>"; } } } ?> <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post" enctype="multipart/form-data"> 选择文件:<input type="file" name="fileToUpload" id="fileToUpload"><br> <input type="submit" value="上传" name="submit"> </form> </body> </html>
文件下载代码(download.php):
<?php $file = "uploads/" . basename($_GET["file"]); // 设置 HTTP 响应头,告诉浏览器下载文件 header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . basename($file)); header("Content-Length: " . filesize($file)); // 将文件内容输出到输出缓冲区 readfile($file); ?>
在上传代码中,我们使用了 $_FILES
超全局变量来获取上传文件的信息。我们进行了一系列的检查,以确保上传的文件符合要求,并尝试将文件移动到指定的目录中。如果移动成功,我们输出一个成功消息,否则输出一个错误消息。
函数来设置响应头,告诉浏览器下载文件。我们使用 basename
函数来获取文件名,并使用 readfile
函数将文件内容输出到输出缓冲区中。
在使用这些代码之前,你需要先创建一个名为 "uploads" 的目录,用于存储上传的文件。你还需要将这些代码保存为两个不同的 PHP 文件,例如 "upload.php" 和 "download.php",并将它们上传到你的 Web 服务器中。
当用户访问 "upload.php" 页面时,他们将看到一个简单的表单,用于上传文件。当他们提交表单时,文件将被上传到 "uploads" 目录中,并显示一个成功或失败的消息。
如果你想让用户下载上传的文件,你可以在另一个页面上链接到 "download.php",并将文件名作为查询参数传递给该页面,例如:
<a href="download.php?file=myfile.pdf">下载文件</a>
将下载名为 "myfile.pdf" 的文件。请确保上传的文件名不包含任何可能引起安全问题的特殊字符,例如 ".." 或 "/"。你还可以对上传的文件进行更复杂的验证和处理,例如检查文件类型、大小、内容等,以确保它们符合你的要求。
猜你喜欢:
评论