TP5实现多文件上传

最近要实现多图片上传,折腾了很久,总结一下基本的步骤。

首先前端 代码:

 <form id="addform"  action="Upload_talent_tablec/hanleImgList/"        method="post" enctype="multipart/form-data">
    <p>请选择要导入的图片文件:<br/>
       <input type="file" name="image[]" multiple="multiple" />
        <input type="submit" class="btn" value="导入图片">     
    </p>
</form> 

需要注意: 默认的文件上传 type = "file" 是上传的单个文件,如果需要上传多个文件,需要加 multiple =“multiple”,name="image[]",name字段的字符串需要加[],表示获取数组。   action ="你自己的php路径"

后端代码:   参数这些不看  只看逻辑,显示单个上传,然后多个上传,多个上传先获取文件,然后遍历调用单个上传的函数

public function hanleImgList($empNo = '')
{
    header("Access-Control-Allow-Origin: *");
    $imgFile = request()->file('image');     // 这个获取到上传的文件
    if (empty($imgFile)) {
        return retmsg(-1, '', '获取文件失败');
    }
    $errData = array();  //用于存放导入失败的信息
    $num = 0;  //用于存放导入成功的记录数
    if (!empty($empNo)) {
        $res = $this->handleImportImg($empNo, $imgFile);
        return $res;
    } else {
        foreach ($imgFile as $key => $file) {
            $empName = $file->getInfo()['name'];
            $empNo = substr(trim($empName,''),0,8);
            $res = $this->handleImportImg($empNo, $file);
            if ($res['resultcode'] == -1) {
                array_push($errData, ['empNo' => $res['data'], 'msg' => $res['resultmsg']]);
            } else {
                $num++;
            }
        }
        return retmsg(0, $errData, '导入成功' . $num . '条记录, 导入失败' . count($errData) . '条记录');
    }
}
public function handleImportImg($empNo, $file = '')
{
    $imgFile = $file;
    if ($imgFile) {
        $info = $imgFile->validate(['size' => 20485760, 'ext' => 'jpg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'img' . DS . 'form_img', $empNo . '_3');     //调用验证器   move移动到制定的文件下,move(string1,string2),string1代表路径,string2表示给文件命名,并加在string1上
        if ($info) {
            $fileName = $info->getFilename();   //获取移动后的文件名
            $saveUrl = 'http://localhost' . DS . 'talents' . DS . 'public' . DS . 'img' . DS . 'form_img' . DS . $fileName;
            $uploadModel = new \app\admin\model\UploadTalentTable();    //我的model层 访问数据库
            $res = $uploadModel->addImg($empNo, $saveUrl);    //访问数据库 新增
            if ($res) {
                return retmsg(1, $empNo, '上传图片成功');
            } else {
                return retmsg(-1, $empNo, '上传图片失败');
            }
        } else {
            return retmsg(-1, $empNo, '上传的文件不是图片,请从新上传');
        }
    } else {
        return retmsg(-1, $empNo, '没有获取到文件');
    }
}

猜你喜欢

转载自blog.csdn.net/qq_38526952/article/details/90699763