js
$(\'#addbtn\').click(function () { var form = document.getElementById("img-form");//获取表单的数据 var formdata = new FormData(form);//格式化表单数据 console.log(formdata); $.ajax({ type: "POST", async:false,//同步请求 processData: false,// 不处理发送的数据 contentType: false,// 不设置Content-Type请求头 dataType: "json", url: "{:url(\'admin/banner/upload\')}", data: formdata, success: function (res) { if (res.code == 1) { layer.msg(res.msg, { icon: 6, time: 2000 }, function () { window.location.href = res.url; }) } else { layer.open({ title: \'添加失败\', content: res.msg, icon: 5, anim: 6 }) } } }); })
控制器
// 上传图片 public function upload() { if (request()->isPost()) { $data = [ \'title\' => input(\'title\'), \'desc\' => input(\'desc\'), \'link\' => input(\'link\') ]; $file = request()->file(\'image\'); if (!$file) { $this->error($file->getError()); } //验证 $map = [ \'ext\' => \'jpg,png,bmp,jpeg,gif\', \'size\' => \'3000000\' //3MB 文件大小单位是字节 ]; $info = $file->validate($map)->move(ROOT_PATH . \'public\' . DS . \'uploads\'); if (!$info) { $this->error($file->getError()); } $data[\'path\'] = DS . \'uploads\' . DS . $info->getSaveName(); $res = model(\'Banner\')->upload($data); if ($res == 1) { $this->success(\'添加成功!\', \'admin/banner/bannerlist\'); } else { $this->error($res); } } }
模型
class Banner extends Model { //文件上传 public function upload($data) { $validate = new ValidateBanner(); if (!$validate->scene(\'upload\')->check($data)) { return $validate->getError(); } $res = $this->allowField(true)->save($data); if ($res) { return 1; } else { return \'上传失败!\'; } } }
验证器
class Banner extends Validate { protected $rule = [ \'title|标题\' => \'require\', \'link|链接\' => \'require\', \'desc|描述\' => \'require\' ]; protected $scene = [ \'upload\' => [\'title\', \'link\', \'desc\'] ]; }