ajax表單上傳圖片和數據


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']
    ];
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM