美文网首页PHP经验分享
PHP 记录自己的图片上传(单图和多图)

PHP 记录自己的图片上传(单图和多图)

作者: PEIZIJUN | 来源:发表于2017-05-24 17:33 被阅读0次

    单图上传:
    html:

    <input type="file" id="up_img" name="file"/> // 上传按钮
    <input id="path_a" name="imgpath_a" type="hidden" value=''/>  //返回路径
    ![](__ASSETS__/images/uploadfile.png) // 图片显示
    

    js:

    <script src="__ASSETS__/js/ajaxfileupload.js" type="text/javascript"></script>
      <script>
            $(function(){
                $("body").on("change","#up_img",function(){
                    $.ajaxFileUpload({  
                        url : "{:U('Console/Console/files')}",   //submit to UploadFileServlet  
                        secureuri : false,  
                        dataType : 'text',    //返回的文本类型
                        fileElementId : 'up_img',     //file 的   ID
                        success : function(data) { 
                            $("#path_a").val('/'+data);     //把返回的路径放到要提交的input中    data是返回的路劲
                            $("#imgShow").attr("src",'/'+data);   //显示图片
                        },  
                    });
                })
            })
      </script>
    

    处理图片上传

    public function files(){
            if($_FILES['file']['error'] == 0){
                $type_array = array('image/jpeg','image/pjpeg','image/gif','image/png','application/octet-stream'); 
                if($_FILES['file']['size'] <= 3000000){   //判断图片大小
                    $name = $_FILES['file']['name'];
                    $name_arr = explode('.', $name);
                    $new_name = time().uniqid().'.'.$name_arr[count($name_arr)-1];
                    $path = 'Public/Console/images/admin/'.date('Y',time()).'/'.date('m',time());   //上传图片路径
                    $new_path = $path.'/'.$new_name;
                    
                    if(!is_dir($path)){
                        mkdir($path,0777,true);
                    }
                    if(move_uploaded_file($_FILES['file']['tmp_name'],$new_path)){
                        echo $new_path;die;    //返回路径
                    }else{
                        echo "<script>alert('上传图片失败!')</script>";
                    }
                }else{
                    echo "<script>alert('上传图片过大!')</script>";
                }
            }
        }
    

    多图上传 和单图没啥区别,就是循环上传
    html:

    <input type="file"  id="up-img" multiple="multiple"  name="file[]" class="aaa"/>    //multiple="multiple"要有这个
    <input type="hidden" id="path" name="imgpath">
    

    js:

    <script>
            $(function(){
                var j = 0;     //申明这个是循环显示图片的时候,给图片已个能找到它的东西
                $("body").on("change",".aaa",function(){
                    var f = $("#up-img").val();
                    $.ajaxFileUpload({  
                        url : "{:U('Console/Console/filesall')}",   //submit to UploadFileServlet  
                        secureuri : false,  
                        dataType : 'text',
                        fileElementId : 'up-img',   
                        success : function(data) {
                            var path = $("#path").val();
                            var newpath = path+data;
                            $("#path").val(newpath);
                            var str=data.substring(0,data.length-1)    //返回回来的路径最后多着一个逗号
                            var arr=str.split(',');
                            for(var i=0;i<arr.length;i++){   //循环显示图片
                                $("#imgshow").append("<div style='float:left;width:150px;height:150px;margin-right:10px;margin-bottom:10px;position:relative;' id='divimg"+j+"'>![]("+arr[i]+")<a style='position:absolute;right:0;top:0;background:#ccc;color:#fff;width:22px;height:22px;text-align: center;line-height:22px;cursor:pointer;' onclick='clearimg("+j+")'>×</a></div>");
                                j++
                            }
                        },  
                    })
                })
            })
      </script>
    

    处理多图图片上传

    public function filesall(){
            $i = 0;
            $length = count($_FILES['file']['name']);
            $img = array();
            for($i;$i<$length;$i++){    //接收过来的东西, 处理一下
                $img[$i]['name'] = $_FILES['file']['name'][$i];
                $img[$i]['type'] = $_FILES['file']['type'][$i];
                $img[$i]['tmp_name'] = $_FILES['file']['tmp_name'][$i];
                $img[$i]['error'] = $_FILES['file']['error'][$i];
                $img[$i]['size'] = $_FILES['file']['size'][$i];
            }    
            foreach ($img as $v){    //循环上传
                if($v['error'] == 0){
                    $type_array = array('image/jpeg','image/pjpeg','image/gif','image/png','application/octet-stream');
                    if($v['size'] <= 5000000){
                        $name = $v['name'];
                        $name_arr = explode('.', $name);
                        $new_name = time().uniqid().'.'.$name_arr[count($name_arr)-1];
                        $path = 'Public/Console/images/admin/'.date('Y',time()).'/'.date('m',time());
                        $new_path = $path.'/'.$new_name;
                        
                        if(!is_dir($path)){
                            mkdir($path,0777,true);
                        }
                        if(move_uploaded_file($v['tmp_name'],$new_path)){
                            $ppp .= '/'.$new_path.',';   //循环里面用逗号拼接一下字符串
                        }else{
                            echo "<script>alert('上传图片失败!')</script>";
                        }
                    }else{
                        echo "<script>alert('上传图片过大!')</script>";
                    }
                }
            }
            if($ppp){    //返回上传后的路劲
                echo $ppp;die;
            }
        }
    

    相关文章

      网友评论

        本文标题:PHP 记录自己的图片上传(单图和多图)

        本文链接:https://www.haomeiwen.com/subject/lwsoxxtx.html