在Web开发中,文件上传和下载是常见的功能。在PHP中,实现文件上传和下载功能非常简单。本文将介绍如何在PHP中实现文件上传和下载功能。
文件上传
在PHP中,可以使用`$_FILES`全局变量来处理文件上传。下面是一个简单的文件上传示例:
```php
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
```
在`upload.php`中处理文件上传:
```php
<?php
$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["file"]["name"]);
$uploadOk = ;
$imageFileType = strtolower(pathinfo($targetFile,PATHINFO_EXTENSION));
// 检查文件是否已存在
if (file_exists($targetFile)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// 检查文件大小
if ($_FILES["file"]["size"] > 00000) {
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;
}
// 检查$uploadOk是否为0
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// 如果一切正常,尝试上传文件
} else {
if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) {
echo "The file ". basename( $_FILES["file"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
```
上述示例中,首先定义了上传文件的目标目录`$targetDir`,然后检查了文件是否已存在、文件大小和文件类型等条件,最后将文件移动到目标目录。
文件下载
在PHP中,可以使用`readfile()`函数来实现文件下载。下面是一个简单的文件下载示例:
```php
<?php
$file = &;path/to/file.pdf&;;
if (file_exists($file)) {
header(&;Content-Description: File Transfer&;);
header(&;Content-Type: application/octet-stream&;);
header(&;Content-Disposition: attachment; filename="&;.basename($file).&;"&;);
header(&;Expires: 0&;);
header(&;Cache-Control: must-revalidate&;);
header(&;Pragma: public&;);
header(&;Content-Length: &; . filesize($file));
readfile($file);
exit;
} else {
echo &;File not found&;;
}
?>
```
上述示例中,首先检查文件是否存在,然后设置HTTP头信息,最后使用`readfile()`函数输出文件内容,从而实现文件下载功能。
总结一下,通过`$_FILES`全局变量实现文件上传,通过`readfile()`函数实现文件下载,可以很方便地在PHP中实现文件上传和下载功能。希望本文对你有所帮助!