PHP实现文件上传和下载的示例代码

1. 文件上传概述

文件上传是Web应用中常见的功能之一,允许用户将文件从客户端上传到服务器端。PHP提供了丰富的函数和方法来处理文件上传操作。本文将介绍如何使用PHP实现文件上传和下载的示例代码,并附带详细的解释。

2. 文件上传流程

文件上传的整个流程可以分为以下几个步骤:

2.1 表单创建

首先,我们需要在HTML页面中创建一个表单,用于用户选择要上传的文件。使用<form>标签以及<input type="file">标签可以创建一个文件上传表单。

<form action="upload.php" method="POST" enctype="multipart/form-data">

<input type="file" name="fileToUpload">

<input type="submit" value="Upload" name="submit">

</form>

重要提示:一定要设置表单的enctype属性为"multipart/form-data",否则文件无法正确上传。

2.2 服务器端文件处理

当用户点击提交按钮后,表单数据将被发送给服务器。在服务器端,我们需要编写PHP代码来处理上传的文件。

<?php

if(isset($_POST["submit"])) {

$targetDir = "uploads/";

$targetFile = $targetDir . basename($_FILES["fileToUpload"]["name"]);

$uploadOk = 1;

$imageFileType = strtolower(pathinfo($targetFile,PATHINFO_EXTENSION));

// 检查文件是否为真实的图片

if(isset($_POST["submit"])) {

$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);

if($check !== false) {

echo "File is an image - " . $check["mime"] . ".";

$uploadOk = 1;

} else {

echo "File is not an image.";

$uploadOk = 0;

}

}

// 检查文件是否已经存在

if (file_exists($targetFile)) {

echo "Sorry, file already exists.";

$uploadOk = 0;

}

// 检查文件大小

if ($_FILES["fileToUpload"]["size"] > 500000) {

echo "Sorry, your file is too large.";

$uploadOk = 0;

}

// 允许特定的文件格式

if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"

&& $imageFileType != "gif" ) {

echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";

$uploadOk = 0;

}

// 如果所有检查都通过,则将文件从临时目录移动到目标目录

if ($uploadOk == 1) {

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {

echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";

} else {

echo "Sorry, there was an error uploading your file.";

}

}

}

?>

3. 文件下载示例代码

除了文件上传,我们还可以使用PHP实现文件的下载功能。以下是一个简单的示例代码,用于实现文件下载:

<?php

$file = 'path/to/file.pdf'; // 下载文件的路径

$filename = 'file.pdf'; // 下载文件的名称

header('Content-type: application/pdf'); // 设置下载文件的文件类型

header('Content-Disposition: attachment; filename="' . $filename . '"'); // 设置下载文件的名称

readfile($file);

?>

上述代码会将指定路径的文件发送给浏览器下载,文件类型和名称由头部信息指定。可以根据需要修改文件路径和文件名称。

4. 总结

本文介绍了使用PHP实现文件上传和下载的示例代码。通过创建文件上传表单,接收并处理用户上传的文件,我们可以轻松实现文件上传功能。而文件下载功能则可以通过设置头部信息和读取文件内容来实现。这些功能在很多Web应用中都是非常常见的,希望本文能为读者提供一些帮助和指导。

后端开发标签