- 110浏览
- 2022-05-08
先在文件头部使用命名空间think\File
封装单图片上传和多图片上传方法
use think\File;
/**
* 上传单张图片,返回值为保存路径或false
* @param $file
* @return bool
*/
function addImg(File $file)
{
//移动至public/uploads
$info = $file->validate(['ext' => 'jpg,jpeg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'uploads');
if ($info) {
return $info->getSaveName();
}
return false;
}
/**
* 上传多张图片,返回值为保存路径数组,若有'error'则上传不成功
* @param File $files
*/
function addImgs($files)
{
$arr = [];
foreach ($files as $file) {
$path = addImg($file);
if ($path) {
$arr[] = $path;
} else {
$arr[] = 'error';
}
}
return $arr;
}
定义完成,在控制器中进行调用,代码如下,多余业务代码无需在意
单图上传:
//修改商城海报
public function updateshopbanner()
{
$where = ['name' => 'shopbanner'];
if (Request::instance()->isPost()) {
$file = request()->file('file');//单个图片上传
$re = addImg($file);
$re = $this->configModel->db->where($where)->setField('content', $re);
if ($re) {
$this->success('修改成功', '', '', 1);
} else {
$this->error('修改失败');
}
}
$rs = $this->configModel->db->where($where)->find();
$this->assign('rs', $rs);
return view();
}
多图上传:
//添加维修单
public function add()
{
if ($this->request->isPost()) {
$post = input('post.');
$files = request()->file('image');//接收多个图片
unset($post['image']);
Db::startTrans();
$post['addtime'] = date('Y-m-d H:i:s');
$result = $this->repairModel->db->insertGetId($post);
if (!empty($files)) {
$repairpic = addImgs($files);//调用多个图片上传上传
if (in_array('error', $repairpic)) {
Db::rollback();
die(json_encode(['status' => 2, 'msg' => '图片上传失败,请稍后再试!']));
}
$repair = [];
foreach ($repairpic as $v) {
$arr = [
'url' => $v,
'repair_id' => $result,
];
$re = $this->repairpicModel->db->insert($arr);
if (!$re) {
$repair[] = 'error';
}
}
if (in_array('error', $repair)) {
Db::rollback();
die(json_encode(['status' => 2, 'msg' => '报修失败']));
}
}
if ($result) {
Db::commit();
die(json_encode(['status' => 1, 'msg' => '报修成功!']));
} else {
Db::rollback();
die(json_encode(['status' => 2, 'msg' => '报修失败!']));
}
}
$uid = session('exist')['id'];
$repair = $this->repairModel->db->where('uid', $uid)->order('addtime desc')->limit(1)->find();
return view('', ['uid' => $uid, 'repair' => $repair]);
}
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。