layui 文件上傳


前端

       <div class="layui-upload">
            <button type="button" class="layui-btn" id="test1">上傳圖片</button>
                <input type="hidden" class="file" name="file" id="demoText" value="" >
            <div class="layui-upload-list">
                <img class="layui-upload-img" id="image">
            </div>
            <div style="width: 95px;">
                <div class="layui-progress layui-progress-big" lay-showpercent="yes" lay-filter="demo">
                    <div class="layui-progress-bar" lay-percent=""></div>
                </div>
            </div>
        </div>
<script>
    layui.use(['upload', 'element', 'layer'], function() {
        var $ = layui.jquery
            , upload = layui.upload
            , element = layui.element
            , layer = layui.layer;

        //常規使用 - 普通圖片上傳
        var uploadInst = upload.render({
            elem: '#test1'
            , url: "{:url('test/add/file')}" //此處用的是第三方的 http 請求演示,實際使用時改成您自己的上傳接口即可。
            , before: function (obj) {
                //預讀本地文件示例,不支持ie8
                obj.preview(function (index, file, result) {
                    $('#image').attr('src', result); //圖片鏈接(base64)
                });

                element.progress('demo', '0%'); //進度條復位
                layer.msg('上傳中', {icon: 16, time: 0});
            }
            , done: function (res) {
                //如果上傳成功
                if (res.code == 0) {
                    layer.msg('上傳成功');
                }
                //上傳成功的一些操作
                //……
                $('#demoText').val(res.data); //置空上傳失敗的狀態
            }
            , error: function () {
                //演示失敗狀態,並實現重傳
                var demoText = $('#demoText');
                demoText.html('<span style="color: #FF5722;">上傳失敗</span> <a class="layui-btn layui-btn-xs demo-reload">重試</a>');
                demoText.find('.demo-reload').on('click', function () {
                    uploadInst.upload();
                });
            }
            //進度條
            , progress: function (n, elem, e) {
                element.progress('demo', n + '%'); //可配合 layui 進度條元素使用
                if (n == 100) {
                    layer.msg('上傳完畢', {icon: 1});
                }
            }
        });
    });
</script>

后台

    public function file()
    {
        $file = request()->file('file');
        if($file){
            $info = $file->validate(['ext'=>'png,jpg,jpeg'])->move(ROOT_PATH . 'public' . DS . 'uploads');
            if($info){
                $data['file'] = DS . 'uploads' . DS . $info->getSaveName();
//
生成縮略圖 $image = \think\Image::open('.'.$data['file']);
 //這里是地址,必須拼接這個點不然找不到 $image->thumb(200, 200)->save('.'.$data['file']); }else{ 
return json(['code'=>500,'msg'=>$file->getError()]) } }
return json(['code'=>0,'msg'=>'成功','data'=>$data['file']]); }

 

 public function save(Request $request)
    {
        $data = input();
        array_shift($data);
        $validate = Loader::validate('Add');

        if(!$validate->check($data)){
            $this->error($validate->getError());
        }
        $res = \app\test\model\Goods::create($data);
        if ($res){
            return  json(['code'=>0,'msg'=>'添加成功','data'=>$res]);
        }else{
            return  json(['code'=>500,'msg'=>'失敗'])
        }
    }

 


免責聲明!

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



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