ThinkPHP 5.1 封装处理单张图片上传函数

2020-07-24  本文已影响0人  YEYU2001
/**
 * 封装处理单张图片上传并存储到数据库
 * @Author   YEYU2001
 * @DateTime 2020-07-25T02:25:51+0800
 * @param    [文本]           $modal   [模块:前台还是后台admin等]
 * @param    [文本]           $table   [对应的数据表名,同时也是数据模型名]
 * @param    [文本]           $picture [将图片地址存入数据库中的具体字段名]
 * @param    [数值]           $id      [具体的数据记录id主键索引序号]
 * @param    [对象]           $file    [Form表单上传的File对象]
 * 返回的结果有三类:
 *     0,表示数据上传失败;
 *     1,表示成功上传图片到服务器但是保存到数据库时失败;
 *     2,表示图片上传和保存数据库都成功!【这才是我们要的结果】
 */
function CMN_UploadOnePictue($modal,$table,$picture,$id,$file) {
    // 如果上传为空则退回
    if (empty($file)) { $this->error('请选择上传图片'); }
    // 移动到框架应用根目录/uploads/ 目录下
    $info = $file->move('../public/uploads');
    // 如果上传成功
    if (!$info) { return 0; } else {
        // 取得图片地址
        $picPath = $info->getSaveName();
        // 动态变量拼接创建对象
        $model_string  = '\app\\'.$modal.'\model\\' . $table;
        $model = new $model_string;    // 实例化Blog模型
        // 获取当前文章的记录
        $record = $model->where('id', $id)->find();
        // 获取原记录的图片真实地址
        if (strlen($record[$picture])>3) {
            // 获取原记录的图片真实地址
            $filename = ROOT_PATH .'uploads\\'. $record[$picture];
            // 如果文件已经存在则删除原来的图片
            if (file_exists($filename)) { unlink($filename); }
        }
        //更新博客新图片地址
        $band = $model->isUpdate(true)->save([$picture => $picPath], ['id'=>$id]);
        //返回更新结果
        if ($band) { return 2; } else { return 1; }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读