php实现多图上传
使用HTML表单和PHP处理多图上传
创建一个HTML表单,设置enctype="multipart/form-data"并允许选择多个文件:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="images[]" multiple>
<input type="submit" value="上传">
</form>
处理上传的PHP代码
在upload.php中接收并处理上传的文件:

if(isset($_FILES['images'])) {
$uploadDir = 'uploads/';
if (!file_exists($uploadDir)) {
mkdir($uploadDir, 0777, true);
}
foreach($_FILES['images']['tmp_name'] as $key => $tmpName) {
$fileName = basename($_FILES['images']['name'][$key]);
$targetPath = $uploadDir . $fileName;
if(move_uploaded_file($tmpName, $targetPath)) {
echo "文件 {$fileName} 上传成功<br>";
} else {
echo "文件 {$fileName} 上传失败<br>";
}
}
}
添加文件验证
为确保安全性,应验证文件类型和大小:
$allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
$maxSize = 2 * 1024 * 1024; // 2MB
foreach($_FILES['images']['tmp_name'] as $key => $tmpName) {
$fileType = $_FILES['images']['type'][$key];
$fileSize = $_FILES['images']['size'][$key];
if(!in_array($fileType, $allowedTypes)) {
echo "文件类型不支持";
continue;
}
if($fileSize > $maxSize) {
echo "文件大小超过限制";
continue;
}
// 处理上传...
}
生成唯一文件名
避免文件名冲突:

$extension = pathinfo($_FILES['images']['name'][$key], PATHINFO_EXTENSION);
$fileName = uniqid() . '.' . $extension;
使用AJAX实现无刷新上传
如果需要更好的用户体验,可以使用jQuery AJAX:
$('form').submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
url: 'upload.php',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(response) {
alert('上传成功');
}
});
});
错误处理和日志记录
添加错误处理和日志功能:
ini_set('display_errors', 1);
error_reporting(E_ALL);
try {
// 上传处理代码...
} catch(Exception $e) {
error_log('上传错误: ' . $e->getMessage());
echo '上传过程中出现错误';
}
这些方法组合起来可以创建一个完整的多图上传功能,包括前端界面、后端处理、安全验证和错误处理。根据实际需求可以选择实现部分或全部功能。






