form表单上传文件_PHP上传文件和下载
时间: 2023-12-27 13:51:02 浏览: 134
PHP实现单文件上传与下载
上传文件可以使用 HTML 的 `<form>` 标签和 `<input>` 标签来实现。需要将 `<form>` 标签的 `enctype` 属性设置为 `multipart/form-data`,这样浏览器就会将表单中的文件数据进行特殊的编码,然后再将编码后的数据发送给服务器。在服务器端,可以使用 PHP 提供的 $_FILES 数组来获取上传的文件信息。
以下是一个简单的上传文件的 HTML 表单:
```
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="上传文件" name="submit">
</form>
```
其中,`action` 属性指定了表单提交的 URL,`method` 属性指定了表单提交的方法(此处为 POST),`enctype` 属性指定了表单数据的编码方式。`<input>` 标签的 `type` 属性为 `file`,表示这是一个文件上传的输入框,`name` 属性为 `fileToUpload`,表示上传文件的参数名。
在服务器端,可以使用以下 PHP 代码来处理上传的文件:
```
<?php
if(isset($_POST["submit"])) {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// 检查文件是否已存在
if (file_exists($target_file)) {
echo "对不起,该文件已存在。";
$uploadOk = 0;
}
// 检查文件大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "对不起,文件过大。";
$uploadOk = 0;
}
// 允许特定的文件格式
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "对不起,只允许上传 JPG, JPEG, PNG 和 GIF 文件。";
$uploadOk = 0;
}
// 检查 $uploadOk 是否为 0
if ($uploadOk == 0) {
echo "对不起,文件上传失败。";
// 如果一切都没问题,尝试上传文件
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "文件 ". basename( $_FILES["fileToUpload"]["name"]). " 上传成功。";
} else {
echo "对不起,文件上传失败。";
}
}
}
?>
```
代码中首先检查了上传文件的大小、格式等信息,如果有问题则提示用户上传失败。如果一切都没问题,则将上传的文件移动到指定的目录中。
文件下载可以使用 PHP 的 `readfile()` 函数来实现。以下是一个简单的下载文件的 PHP 代码:
```
<?php
$file = "example.txt";
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 "对不起,文件不存在。";
}
?>
```
代码中首先检查了要下载的文件是否存在,如果存在则设置了 HTTP 响应头,告诉浏览器该文件需要以附件形式下载。最后调用了 `readfile()` 函数将文件内容输出到客户端。
阅读全文