tp5 + layui 上传图片[支持单张和多张 ]

在以前项目中遇到有上传图片都是用 web Uploader插件上传,因为我现在项目都在使用 layui 所以今天趁着有时间写一个tp5结合layui上传图片的demo

我用的是Tinkphp5.1版本 layui用的是2.1.1 废话不多说 代码如下:

下面的是html代码

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>tp5 + layui 上传图片</title>
    <link rel="stylesheet" href="/static/plugins/layui/css/layui.css">
    <script src="/static/jquery-1.10.2.min.js"></script>
    <script src="/static/plugins/layui/layui.js"></script>
    <style type="text/css">
        .box{
            margin-top: 10%;
            margin-bottom: 10px;
            color: #FF5722;
            font-size: 18px;
            margin-left: 45%;
        }
        .box1{
            width: 900px;
            height: 500px;
            margin-left: auto;
            border:solid  1px;
            margin-right:auto;
        }
        .box1 .controls{
            margin-left: 45%;
            margin-top: 20%;
        }
        .upload-pre-item{
            position: relative;
        }
        .upload-pre-item .img{
            margin-top: 5px;
            width: 116px;
            height: 76px;
        }
        .upload-pre-item i {
            position: absolute;
            cursor: pointer;
            top: 9px;
            right: 356px;
            background: #2F4056;
            padding: 2px;
            line-height: 15px;
            text-align: center;
            color: #fff;
            margin-left: 1px;
            /* float: left; */
            filter: alpha(opacity=80);
            -moz-opacity: .8;
            -khtml-opacity: .8;
            opacity: .8;
            transition: 1s;
        }
        .upload-pre-item i:hover{transform:rotate(360deg);}

    </style>
</head>
<body>
<div class="box"><span style="">tp5 + layui 上传图片</span></div>
<div class="box1">
    <div class="controls need-img">
        <button type="button" class="layui-btn layui-btn-primary" id="upload_img_icon">上传图片</button>
        <div class="upload-img-box">
        </div>
    </div>
</div>
<script>

    var upurl = "{:url('Index/Index/upload')}"; //上传图片地址
    layui.use(['layer','upload'], function(){
        var layer = layui.layer;
        var upload = layui.upload;
        upload.render({ //上传图片
            elem: '#upload_img_icon',
            url: upurl,
            multiple: true, //是否允许多文件上传。设置 true即可开启。不支持ie8/9
            before: function(obj) {
                layer.msg('图片上传中...', {
                    icon: 16,
                    shade: 0.01,
                    time: 0
                })
            },
            done: function(res) {
                layer.close(layer.msg());
                $('.upload-img-box').append('<dd class="upload-icon-img"><div class="upload-pre-item"><i onclick="deleteImg($(this))" class="layui-icon"></i><img src="' + res.data + '" class="img" ><input type="hidden" name="icon" value="' + res.data + '" /></div></dd>');
            }
            ,error: function(){
                layer.msg('上传错误!');
            }
        });

    });
    function deleteImg(obj){
        obj.parent().parent('.upload-icon-img').remove();
    }
</script>
</body>
</html>

 

 

因为是demo 所以我就把他上传到Index模块index控制器里面了,下面是php代码 我用的是tp5.1的 

    public function upload(){
        $pathName  =  $this->request->param('path');//图片存放的目录
        $file = request()->file('file');
        $path =  'static/uploads/images/' . (!empty($pathName) ? $pathName : 'img');
        if(!is_dir($path)){
            mkdir($path, 0755, true);
        }
        $info = $file->move($path);
        if ($info && $info->getPathname()) {
            $data = [
                'status' => 1,
                'data' =>  '/'.$info->getPathname(),
            ];
            echo exit(json_encode($data));
        } else {
            echo exit(json_encode($file->getError()));
        }
    }

 

如果需要复制上面的html代码 需要引入 jquery 和 layui !!!!!!!!!!!!!!!!!!!!

楼主只写了一些简单的图片上传以及删除 有兴趣的可以写一下图片上传以后图片左右移动,如果有需要tp3.2版本 + layui的 上传图片可以在下方留言 楼主会抽时间也附上tp3.2的,最后 这里附上layui官方 upload上传图片文档的传送门:http://www.layui.com/doc/modules/upload.html

 

单图上传效果:

多图上传效果:

 

 

 本文为作者原创文章,转载无需和我联系,但请注明来自:http://www.cnblogs.com/kzfbk/p/8660582.html

 

 

 

 

 

posted @ 2018-03-27 22:08  拾柒丷  阅读(906)  评论(0编辑  收藏  举报