PHP 文件上传

时间:2025.6.20 编辑:SA 阅读量:895 全屏 二维码链接 浏览等级:0级

<?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>"; ?>