You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:15:45