• TP图片上传


    //控制器文件	
        public function index(){
    	
    		if(!empty($_POST)){
    			
    			$file = $_FILES["file"];
    			if(!isset($file['tmp_name']) || !$file['tmp_name']) {
    				$this->ajaxReturn(['code' => 401, 'msg' => '没有文件上传']);
    				return false;
    			}
    			if($file["error"] > 0) {
    				$this->ajaxReturn(['code' => 402, 'msg' => $file["error"]]);
    				return false;
    			}
    			
    			$upload_path = $_SERVER['DOCUMENT_ROOT'].".".__ROOT__."/Public/upload/";
    			//  D:/wamp/www/1120/Public/upload
    			//    /1120/tp/Public/upload/
    			$file_path   = __ROOT__."/Public/upload/";
    			
    			if(!is_dir($upload_path)){
    				$this->ajaxReturn(['code' => 403, 'msg' => '上传目录不存在']);
    				return false;
    			}
    			if(move_uploaded_file($file["tmp_name"], $upload_path.$file['name'])){
    				$this->ajaxReturn(['code' => 200, 'src' => $file_path.$file['name']]);
    				return false;
    			}else{
    				$this->ajaxReturn(['code' => 404, 'msg' => '上传失败']);
    				return false; 
    			}
    		}
    		
    		$this->show();
    		
    	}
    	
    	
    	public function test(){
    		if(!empty($_POST)){
    			
    			$upd = new ThinkUpload();
    			$upd->rootPath = "./Public/";
    			$upd->savePath = "./upload/";
    			$info = $upd->upload();
    			
    			
    		}else{
    			$this->show();
    		}
    	}
    	
    

     引入文件

    <link href="__PUBLIC__/ajaxImageUpload/css/upload.css" type="text/css" rel="stylesheet" />
    <script src="__PUBLIC__/ajaxImageUpload/js/jquery.js"></script>
    <script src="__PUBLIC__/ajaxImageUpload/js/upload.js"></script
    

     upload.css样式

    /*上传图片插件的样式*/
    
    .upload-box{
        padding: 0 20px;
    	margin: 0 auto;
    	margin-top: 40px;
    }
    
    .upload-box .clear{
    	clear: both;
    }
    
    .upload-box .clear:after{
    	content: '';
    	display: block;
    	clear: both;
    }
    
    .upload-box .upload-tip{
    	margin-bottom: 20px;
    	font-size: 16px;
    	color: #555;
    }
    .upload-box .image-box{
    	padding: 18px;
    	border:2px dashed #E7E6E6;
    }
    
    .image-box section{
    	position: relative;
    	 190px;
    	height: 190px;
    	float: left;
    }
    
    .image-box .upload-section{
    	position: relative;
    }
    
    .image-box .image-section{
    	margin-right: 20px;
    	margin-bottom: 20px;
    }
    
    .image-section:hover{
    	border: 1px solid #f15134;
    }
    
    /*/图片遮罩层样式*/
    .image-section .image-shade{
    	display: block;
    	 100%;
    	height: 100%;
    	visibility: hidden;
    	position: absolute;
    	top: 0px;
    	left: 0px;
    	z-index: 9;
    	background: rgba(0,0,0,.5);
    }
    
    /*鼠标放上去时显示遮罩层*/
    .image-section:hover .image-shade{
    	visibility: visible;
    }
    
    .image-section .image-zoom {
        position: absolute;
         32px;
        height: 32px;
        top: 80px;
        right: 80px;
        display: none;
        z-index: 10;
        background:url(../images/zoom.png) no-repeat center;
    }
    
    .image-section .image-delete {
    	position: absolute;
    	 30px;
    	height: 30px;
    	top: 5px;
    	right: 5px;
    	display: none;
    	z-index: 10;
    	background:url(../images/delete.png) no-repeat center;
    }
    
    .image-section:hover .image-delete{
    	display: block;
    	cursor:pointer;
    }
    
    .image-section:hover .image-zoom{
        display: block;
        cursor:pointer;
    }
    
    .image-box .image-show{
    	display: block;
    	 100%;
    	height: 100%;
    }
    
    .image-loading{
        border: 1px solid #D1D1D1;
    	background:url(../images/loading.gif) no-repeat center;
    }
    
    .image-opcity{
    	opacity: 0;
    }
    
    
    /*上传域样式*/
    .upload-section #upload-input{
    	 100%;
    	height: 100%;
    	opacity: 0;
    	position: absolute;
    	top: 0px;
    	left: 0px;
    	z-index: 100;
    }
    
    /*上传按钮样式*/
    .upload-section .upload-btn {
    	border:1px dashed #d0d0d0;
    	 190px;
    	height: 190px;
    	background:url(../images/upload.png) no-repeat center;
    }
    
    /*遮罩层样式*/
    .delete-modal{
    	z-index: 1000;
    	display: none;
    	position: fixed;
    	top: 0px;
    	left: 0px;
    	 100%;
    	height: 100%;
    	background: rgba(0,0,0,.4);
    }
    .delete-modal .modal-content{
    	  500px;
    	 position: absolute;
    	 top: 50%;
    	 left: 50%;
    	 margin-left: -250px;
    	 margin-top: -80px;
    	 background: white;
    	 height: 160px;
    	 text-align: center;
    }
    
    .modal-content p{
    	margin: 0;
    	padding: 0;
    }
    .modal-content .modal-tip{
    	color: #555;
    	height: 94px;
    	line-height: 94px;
    	font-size: 18px;
    	border-bottom: 1px solid #D1D1D1;
    }
    .modal-content .modal-btn{
    
    	height: 66px;
    	line-height: 66px;
    	position: absolute;
    	bottom: 0px;
    	left: 0px;
    	 100%;
    }
    .modal-content .modal-btn span{
    	 49.8%;
    	display:inline-block;
    	text-align: center;
    	color:#d4361d ;
    	font-size: 18px;
    	border-right: 1px solid #D1D1D1;
    }
    
    .modal-btn:hover span{
        cursor:pointer;
    }
    
    
    /*图片预览样式*/
    #zoom-shade {
        position: absolute;
        top: 0;
        left: 0;
         100%;
    	min-height: 800px;
        height: 100%;
        z-index: 1100;
        background-color: rgb(119, 119, 119);
        opacity: 0.7;
        cursor: pointer;
        display: none;
    }
    #zoom-box {
        position: absolute;
        padding: 20px;
        z-index: 1101;
        outline: none;
        display: none;
        height: auto;
        top: 25%;
        left: 25%;
    }
    
    #zoom-content {
    
        outline: none;
        overflow: hidden;
        z-index: 1102;
        border: 10px solid #fff;
        opacity: 1;
    }
    #zoom-content img {
         100%;
        height: 100%;
        padding: 0;
        margin: 0 auto;
        border: none;
        outline: none;
        line-height: 0;
        vertical-align: top;
    }
    

     upload.js文件

    /**
     * author:gouguoyin
     * qq:245629560
     * doc:http://www.gouguoyin.cn/js/141.html
     */
    (function($){
        $.fn.ajaxImageUpload = function(options){
    
            var defaults = {
    
                data: null,
                url: '',
                zoom: true,
                allowType: ["gif", "jpeg", "jpg", "bmp",'png'],
                maxNum: 10,
                hidenInputName: '', // 上传成功后追加的隐藏input名,注意不要带[],会自动带[],不写默认和上传按钮的name相同
                maxSize: 2, //设置允许上传图片的最大尺寸,单位M
                success: $.noop, //上传成功时的回调函数
                error: $.noop //上传失败时的回调函数
    
            };
    
            var thisObj = $(this);
            var config  = $.extend(defaults, options);
    
            var uploadBox = $(".upload-box");
            var imageBox  = $(".image-box");
            var inputName = thisObj.attr('name');
    
            // 设置是否在上传中全局变量
            isUploading  = false;
    
            thisObj.each(function(i){
                thisObj.change(function(){
                    handleFileSelect();
                });
            });
    
            var handleFileSelect = function(){
    
                if (typeof FileReader == "undefined") {
                    return false;
                }
    
                // 获取最新的section数量
                var imageNum  = $('.image-section').length;
    
                var postUrl   = config.url;
                var maxNum    = config.maxNum;
                var maxSize   = config.maxSize;
                var allowType = config.allowType;
    
                if(!postUrl){
                    alert('请设置要上传的服务端地址');
                    return false;
                }
    
                if(imageNum + 1 > maxNum ){
                    alert("上传图片数目不可以超过"+maxNum+"个");
                    return;
                }
    
                var files    = thisObj[0].files;
                var fileObj  = files[0];
    
                if(!fileObj){
                    return false;
                }
    
                var fileName = fileObj.name;
                var fileSize = (fileObj.size)/(1024*1024);
    
                if (!isAllowFile(fileName, allowType)) {
    
                    alert("图片类型必须是" + allowType.join(",") + "中的一种");
                    return false;
    
                }
    
                if(fileSize > maxSize){
    
                    alert('上传图片不能超过' + maxSize + 'M,当前上传图片的大小为'+fileSize.toFixed(2) + 'M');
                    return false;
    
                }
    
                if(isUploading == true){
    
                    alert('文件正在上传中,请稍候再试!');
                    return false;
    
                }
    
                // 将上传状态设为正在上传中
                isUploading = true;
    
                // 执行前置函数
                var callback = config.before;
    
                if(callback && callback() === false){
                    return false;
                }
    
                createImageSection();
    
                ajaxUpload();
    
            };
    
            var ajaxUpload = function () {
    
                // 获取最新的
                var imageSection = $('.image-section:first');
                var imageShow    = $('.image-show:first');
    
                var formData = new FormData();
    
                var fileData = thisObj[0].files;
    
                if(fileData){
    
                    // 目前仅支持单图上传
                    formData.append(inputName, fileData[0]);
    
                }
    
                var postData = config.data;
    
                if (postData) {
                    for (var i in postData) {
    
                        formData.append(i, postData[i]);
    
                    }
                }
    
                // ajax提交表单对象
                $.ajax({
                    url: config.url,
                    type: "post",
                    data: formData,
                    processData: false,
                    contentType: false,
                    dataType: 'json',
                    success:function(json){
    
                        if(json.code == 200 && !json.src){
                            alert('服务器返回的json数据中必须包含src元素');
                            imageSection.remove();
                            return false;
                        }else if(json.code != 200){
                            alert(json.msg);
                            imageSection.remove();
                            return false;
                        }
    
                        imageSection.removeClass("image-loading");
                        imageShow.removeClass("image-opcity");
    
                        imageShow.attr('src', json.src);
                        imageShow.siblings('input').val(json.src);
    
                        // 将上传状态设为非上传中
                        isUploading = false;
    
                        // 执行成功回调函数
                        var callback = config.success;
                        callback(json);
    
                    },
                    error:function(e){
    
                        imageSection.remove();
                        // 执行失败回调函数
                        var callback = config.error;
                        callback(e);
    
                    }
                });
    
            };
    
            var createDeleteModal = function () {
    
                var deleteModal   = $("<aside class='delete-modal'><div class='modal-content'><p class='modal-tip'>您确定要删除作品图片吗?</p><p class='modal-btn'> <span class='confirm-btn'>确定</span><span class='cancel-btn'>取消</span></p></div></aside>");
                // 创建删除模态框
                deleteModal.appendTo('.image-box');
    
                // 显示弹框
                imageBox.delegate(".image-delete","click",function(){
    
                    // 声明全局变量
                    deleteImageSection = $(this).parent();
                    deleteModal.show();
    
                });
    
                // 确认删除
                $(".confirm-btn").click(function(){
    
                    deleteImageSection.remove();
    
                    deleteModal.hide();
    
                });
    
                // 取消删除
                $(".cancel-btn").click(function(){
                    deleteModal.hide();
                });
    
            };
    
            var createImageSection = function () {
    
                var hidenInputName = config.hidenInputName;
    
                if(!hidenInputName){
                    hidenInputName = inputName;
                }
    
                var imageSection = $("<section class='image-section image-loading'></section>");
                var imageShade   = $("<div class='image-shade'></div>");
                var imageShow    = $("<img class='image-show image-opcity' />");
                var imageInput   = $("<input class='" + inputName + "' name='" + hidenInputName + "[]' value='' type='hidden'>");
                var imageZoom    = $("<div class='image-zoom'></div>");
                var imageDelete  = $("<div class='image-delete'></div>");
    
                imageBox.prepend(imageSection);
    
                imageShade.appendTo(imageSection);
                imageDelete.appendTo(imageSection);
                // 判断是否开启缩放功能
                if(config.zoom && config.zoom === true ){
                    imageZoom.appendTo(imageSection);
                }
    
                imageShow.appendTo(imageSection);
                imageInput.appendTo(imageSection);
    
                return imageSection;
    
            };
    
            var createImageZoom = function () {
    
                var zoomShade   = $("<div id='zoom-shade'></div>");
                var zoomBox = $("<div id='zoom-box'></div>");
                var zoomContent = $("<div id='zoom-content'><img src='http://www.jq22.com/demo/jqueryfancybox201707292345/example/4_b.jpg'></div>");
    
                uploadBox.append(zoomShade);
                uploadBox.append(zoomBox);
    
                zoomContent.appendTo(zoomBox);
    
                // 显示弹框
                imageBox.delegate(".image-zoom","click",function(){
    
                    var src = $(this).siblings('img').attr('src');
                    zoomBox.find('img').attr('src', src);
    
                    zoomShade.show();
                    zoomBox.show();
    
                });
    
                // 关闭弹窗
                uploadBox.delegate("#zoom-shade","click",function(){
    
                    zoomShade.hide();
                    zoomBox.hide();
    
                });
    
            };
    
            //获取上传文件的后缀名
            var getFileExt = function(fileName){
                if (!fileName) {
                    return '';
                }
    
                var _index = fileName.lastIndexOf('.');
                if (_index < 1) {
                    return '';
                }
    
                return fileName.substr(_index+1);
            };
    
            //是否是允许上传文件格式
            var isAllowFile = function(fileName, allowType){
    
                var fileExt = getFileExt(fileName).toLowerCase();
                if (!allowType) {
                    allowType = ['jpg', 'jpeg', 'png', 'gif', 'bmp'];
                }
    
                if ($.inArray(fileExt, allowType) != -1) {
                    return true;
                }
                return false;
    
            };
    
            // 判断是否开启缩放功能
            if(config.zoom && config.zoom === true ){
                createImageZoom();
            }
    
            createDeleteModal();
    
        };
    
    })(jQuery);
    

     images     

    布局html样式

    <div class="upload-box">
        <p class="upload-tip">测试上传</p>
        <div class="image-box clear">
            <section class="upload-section">
                <div class="upload-btn"></div>
                <input type="file" name="file" class="upload-input" id='js_uploadBtn' value=""/>
            </section>
        </div>
    </div>
    

     js文件

    <script type="text/javascript">
    $("#js_uploadBtn").ajaxImageUpload({
        url: '__ACTION__', //上传的服务器地址
        data: { name:'测试' },
        maxNum: 2, //允许上传图片数量
        hidenInputName:'', // 上传成功后追加的隐藏input名,注意不要带[],会自动带[],不写默认和上传按钮的name相同
        zoom: true, //允许上传图片点击放大
        allowType: ["gif", "jpeg", "jpg", "bmp",'png'], //允许上传图片的类型
        maxSize :2, //允许上传图片的最大尺寸,单位M
        before: function () {
            alert('上传前回调函数');
        },
        success:function(data){
            alert('上传成功回调函数');
            console.log(data);
        },
        error:function (e) {
            alert('上传失败回调函数');
            console.log(e);
        }
    });
    </script>
    

     ========

  • 相关阅读:
    求第N个素数
    HDU1568
    HDU1003 DP
    POJ 1016 模拟字符串
    POJ 3321 树状数组(+dfs+重新建树)
    UVA12532 线段树(单点更新,区间求乘积的正负)
    POJ2488 dfs
    POJ 1195 二维树状数组
    HDU 4006 优先队列
    优先队列
  • 原文地址:https://www.cnblogs.com/navyouth/p/8599477.html
Copyright © 2020-2023  润新知