php 多图上传 实例

先看效果图


image.png

image.png

[图片上传中...(image.png-746cfe-1564716841126-0)]


image.png

不逼逼 直接上核心代码

css 和 js 资源在底部

php

//  上传图片。保存图片   
        //  上传图片。保存图片   
     function ajax_upload($path='/case/',$format='empty',$maxSize='524288000')  
        {
                
            ini_set('max_execution_time', '0');  
            // 去除两边的/  
            $path=trim($path,'/');  

            // 添加Upload根目录  
            $path=strtolower(substr($path, 0,6))==='upload' ? ucfirst($path) : $path;  

            // 上传文件类型控制  
            $ext_arr= array(  
            'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp'),  
            'photo' => array('jpg', 'jpeg', 'png'),  
            'flash' => array('swf', 'flv'),  
            'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'),  
            'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2','pdf')  
            );  

            if(!empty($_FILES)){  
                // 上传文件配置  
                $config=array(  
                    'maxSize'   =>  $maxSize,               // 上传文件最大为500M  
                    'rootPath'  =>  './',                   // 文件上传保存的根路径  
                    'savePath'  =>  './data/upload/'.$path.'/',         // 文件上传的保存路径(相对于根路径)   // data/upload/case/  文件夹
                    'saveName'  =>  array('uniqid',''),     // 上传文件的保存规则,支持数组和字符串方式定义  
                    'autoSub'   =>  true,                   // 自动使用子目录保存上传文件 默认为true  
                    'exts'      =>    isset($ext_arr[$format])?$ext_arr[$format]:'',  
                );  
                
                // 实例化上传  
                $upload=new \Think\Upload($config);  

                // 调用上传方法  
                $info=$upload->upload();  

                $data=array();  
                if(!$info){  
                    // 返回错误信息  
                    $error=$upload->getError();  
                    $data['error_info']=$error;  
                    echo json_encode($data);  
                }else{  

                    // 返回成功信息  
                    foreach($info as $file){  
                        
                        $data['path']=trim($file['savepath'].$file['savename'],'.'); 
                        $data['filename'] = date("Y-m-d").'/'.trim($file['savename']);
                        
                        echo json_encode($data); 
                    }
                }
            }
            die();
        } 
    

html

 <tr>
              <th width="80">多图上传</th>
              <td>
                  <div style="width: 700px; height: auto; border: 1px solid #e1e1e1; font-size: 12px; padding: 10px;">
                      <div id="filePicker">选择图片</div>

                  </div>
                  <div id="thumbnails" class="ncap-thumb-list">

                  </div>
              </td>
          </tr>

css

<!--上传图片 css-->
<style type="text/css">
    .col-auto { overflow: auto; _zoom: 1;_float: left;}
    .col-right { float: right; width: 210px; overflow: hidden; margin-left: 6px; }
    .table th, .table td {vertical-align: middle;}
    .picList li{margin-bottom: 5px;}

    .thumb-list-pics{
        display:block;
        width:160px;
        height:240px;
        float:left;
        position:relative;
        margin: 5px;
        padding: 5px;
    }
    .thumb-list-pics input{

        width:140px;

    }


    .thumb-list-pics .del{

        position:absolute;
        top:3px;
        right:3px;
        cursor:pointer;
        color:#333;

    }





</style>
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/webuploader.css" />

js

<script type="text/javascript" src="__PUBLIC__/js/webuploader.js"></script>
<script type="text/javascript">

    var uploader = WebUploader.create({
        // 选完文件后,是否自动上传。
        auto: true,
        // swf文件路径
        swf: '__PUBLIC__/js/Uploader.swf',
        // 文件接收服务端。
        server: '{:u("AdminCasedo/ajax_upload")}',
        // 选择文件的按钮。可选。
        // 内部根据当前运行是创建,可能是input元素,也可能是flash.
        pick: '#filePicker',
        // 只允许选择图片文件。
        accept: {
            title: 'Images',
            extensions: 'gif,jpg,jpeg,bmp,png',

        }
    });

    uploader.on( 'uploadSuccess', function( file,response) {
        var pics = "<div class='thumb-list-pics'><img src='"+response.path+"' style=' width:150px; height:180px; ' /><input type='hidden' value='"+response.filename+"' name='pic[]'><a  class='del' title='删除'>X</a></div>";
        $("#thumbnails").append(pics);

        delactive();

    });

    uploader.on( 'error', function(  code ) {
        if(code == 'Q_EXCEED_NUM_LIMIT'){
            alert('文件超过最大个数!');
        }else if(code == 'Q_EXCEED_SIZE_LIMIT '){
            alert('文件大小不能超过50M!');
        }else if(code == 'F_DUPLICATE'){
            alert('文件重复!');
        }else if(code == 'F_EXCEED_SIZE'){
            alert('文件大小不能超过50M!');
        }else{
            alert('上传文件类型:pdf。上传文件类型错误!');
        }
    });


    function delactive(){

        $('#thumbnails .del').off("click").on("click",function(){
            if(!window.confirm('您确定要删除吗?')){
                return;
            }

            var li = $(this).parent(".thumb-list-pics");

            li.remove();

        });
    }

    delactive();

</script>

css 和 js 资源地址

链接:https://pan.baidu.com/s/1MvyZ-Hhqy2N3wQWASKW9ug
提取码:0847
注:个人测试有效
微信 :yx159337
欢迎一块来讨论

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容

  • HTML5与CSS3权威指南+配套源码https://pan.baidu.com/s/1dhUbZ6anvKLPV...
    丶温瞳阅读 16,795评论 1 34
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,577评论 0 7
  • 模板引擎其实就是将一个带有自定义标签的字符串,通过相应的规则解析,返回php可以解析的字符串,这其中正则的运用是必...
    hopevow阅读 1,342评论 0 10
  • 剑叶琼枝次第生,穿云弄碧任纵横。 炎凉白日看朝夕,浩荡长风听雨晴。 俊影犹凭危涧立,清音欲向九州鸣。 素心无改初颜...
    君怀璧阅读 1,824评论 55 83
  • 2004年1月,作为新移民的我第一次登陆加拿大,在机场的移民局接受面试。大部分问题我已经不大记得了,但是其中两个问...
    成长是刚需阅读 1,504评论 0 0