在PHP中处理多文件上传和下载,你可以通过HTML表单来上传文件,并使用PHP脚本来处理这些文件。以下是一个简单的示例,展示了如何实现多文件上传和下载的基本功能。
### HTML 表单(用于上传)
首先,你需要一个HTML表单来允许用户选择多个文件上传。
<!DOCTYPE html>
<html>
<head>
<title>多文件上传</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
选择文件上传:
<input type="file" name="files[]" multiple>
<input type="submit" value="上传文件">
</form>
</body>
</html>
### PHP 脚本(处理上传)
接下来,是处理文件上传的PHP脚本(`upload.php`)。
<?php
$target_dir = "uploads/"; // 指定上传目录
$target_file = $target_dir . basename($_FILES["files"]["name"][$key]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// 检查目录是否存在
if(!file_exists($target_dir)) {
mkdir($target_dir, 0777, true);
}
// 循环处理每个文件
for ($i = 0; $i < count($_FILES["files"]["name"]); $i++) {
$key = $i;
$check = getimagesize($_FILES["files"]["tmp_name"][$key]);
if($check !== false) {
echo "文件 " . htmlspecialchars(basename($_FILES["files"]["name"][$key])). " 是一个图片 - " . $check["mime"] . ".<br>";
$uploadOk = 1;
} else {
echo "文件 " . htmlspecialchars(basename($_FILES["files"]["name"][$key])). " 不是一个图片.<br>";
$uploadOk = 0;
}
// 尝试上传文件
if ($uploadOk == 0) {
echo "抱歉,你的文件未被上传。";
// 如果一切正常,尝试上传文件
} else {
if (move_uploaded_file($_FILES["files"]["tmp_name"][$key], $target_dir . basename($_FILES["files"]["name"][$key]))) {
echo "文件 ". htmlspecialchars(basename($_FILES["files"]["name"][$key])). " 已被上传。";
} else {
echo "抱歉,上传文件时出现了错误。";
}
}
}
?>
**注意**:上面的PHP脚本仅作为示例,并未包含所有必要的错误处理和安全性检查(如文件类型检查、文件大小限制等)。在实际应用中,你应该添加这些检查来确保系统的安全性。
### 文件下载
对于文件下载,你可以创建一个简单的PHP脚本来读取文件并将其发送到浏览器。
<?php
$file = 'uploads/yourfile.jpg'; // 指定要下载的文件路径
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`变量的值更改为实际要下载的文件路径。这个脚本会告诉浏览器这是一个文件下载,而不是在浏览器中直接打开它,并发送文件内容到浏览器。