如何使用PHP函数实现多图片上传功能
多图片上传的HTML表单与PHP后端实现
功能说明
实现前端多选图片上传表单,配合PHP完成服务器端文件接收、验证与存储。
HTML 表单代码
表单支持多选图片,提交后由image-post-process.php处理上传请求:
<div style="margin-left:15%; margin-top:10%"> <form action="image-post-process.php" method="post" enctype="multipart/form-data"> <table width="500px" align="center" bgcolor="bluesky"> <tr align="center"> <td colspan="2"><h2>更新账户信息</h2></td> </tr> <tr> <td align="right">客户图片:</td> <td><input type="file" name="image[]" multiple /></td> </tr> <tr align="center"> <td colspan="2"><input type="submit" name="update" value="更新账户"/></td> </tr> </table> </form> </div>
关键要点:
- 必须设置
enctype="multipart/form-data"才能支持文件上传 name="image[]"搭配multiple属性实现多文件选择- 修正了原代码中
bgcolor="blueskay"的拼写错误为bluesky,并移除了多余的空<td>标签
PHP 后端处理代码
PHP是Web开发中实现文件上传的高效方案,以下是image-post-process.php的完整代码,包含格式验证、大小限制、文件名去重等功能:
<?php // 处理单张图片上传的函数 function handleImageUpload($imageName, $imageSize, $imageTmp) { // 获取文件扩展名并统一转小写 $ext = strtolower(pathinfo($imageName, PATHINFO_EXTENSION)); // 允许的文件格式 $allowedExtensions = ['pdf', 'png', 'jpg', 'jpeg', 'gif', 'docx']; // 验证文件格式 if (in_array($ext, $allowedExtensions)) { // 验证文件大小(最大10MB) if ($imageSize < 10485760) { // 生成唯一文件名,避免重复覆盖 $newFileName = round(microtime(true)) . "_" . $imageSize . "_" . $imageName; // 确保上传目录存在,不存在则递归创建 $uploadDir = 'image/'; if (!is_dir($uploadDir)) { mkdir($uploadDir, 0755, true); } // 移动临时文件到目标目录 if (move_uploaded_file($imageTmp, $uploadDir . $newFileName)) { return $newFileName; } else { echo "文件上传失败<br>"; } } else { echo "文件过大,最大支持10MB<br>"; } } else { echo "不支持的文件格式<br>"; } } // 判断是否提交了表单且有文件上传 if (isset($_POST['update']) && !empty($_FILES['image']['name'][0])) { $fileCount = count($_FILES['image']['name']); // 遍历所有上传的文件 for ($i = 0; $i < $fileCount; $i++) { $imageName = $_FILES['image']['name'][$i]; $imageSize = $_FILES['image']['size'][$i]; $imageTmp = $_FILES['image']['tmp_name'][$i]; // 跳过未选择的空文件 if (!empty($imageTmp)) { handleImageUpload($imageName, $imageSize, $imageTmp); } } } ?>
功能说明:
- 统一将扩展名转为小写,避免大小写导致的验证错误
- 生成包含时间戳的唯一文件名,防止文件覆盖
- 自动创建上传目录,避免因目录不存在导致上传失败
- 增加表单提交判断和空文件跳过逻辑,提升代码健壮性
- 上传成功后返回新文件名,可直接存入数据库用于后续文件访问
内容的提问来源于stack exchange,提问作者Mehedi Hasan Shamim
相关产品推荐
相关产品推荐

