<?php
// 上传目录(需确保有写入权限)
$uploadDir = 'uploads/';
if (!file_exists($uploadDir)) {
mkdir($uploadDir, 0777, true);
}
// 允许的文件类型
$allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
// 最大文件大小(10MB)
$maxSize = 10 * 1024 * 1024;
// 存储上传结果
$results = [];
// 检查是否有文件上传
if (isset($_FILES['files'])) {
$uploadedFiles = $_FILES['files'];
// 遍历每个上传的文件
for ($i = 0; $i < count($uploadedFiles['name']); $i++) {
$fileName = $uploadedFiles['name'][$i];
$fileTmpName = $uploadedFiles['tmp_name'][$i];
$fileSize = $uploadedFiles['size'][$i];
$fileError = $uploadedFiles['error'][$i];
$fileType = mime_content_type($fileTmpName); // 获取真实文件类型
// 生成唯一文件名,避免冲突
$uniqueName = uniqid() . '_' . $fileName;
$destination = $uploadDir . $uniqueName;
// 检查文件错误
if ($fileError !== UPLOAD_ERR_OK) {
$results[] = [
'name' => $fileName,
'success' => false,
'message' => "上传失败: 错误代码 {$fileError}"
];
continue;
}
// 检查文件大小
if ($fileSize > $maxSize) {
$results[] = [
'name' => $fileName,
'success' => false,
'message' => "上传失败: 文件大小超过限制"
];
continue;
}
// 检查文件类型
if (!in_array($fileType, $allowedTypes)) {
$results[] = [
'name' => $fileName,
'success' => false,
'message' => "上传失败: 不允许的文件类型 ({$fileType})"
];
continue;
}
// 移动文件到目标目录
if (move_uploaded_file($fileTmpName, $destination)) {
$results[] = [
'name' => $fileName,
'success' => true,
'message' => "上传成功",
'path' => $destination
];
} else {
$results[] = [
'name' => $fileName,
'success' => false,
'message' => "上传失败: 无法移动文件"
];
}
}
}
// 输出结果
echo "<pre>";
print_r($results);
echo "</pre>";
?>
|