zoukankan      html  css  js  c++  java
  • 图片空间-网盘

    就是酱紫的一个东西,类似于一个网盘,只不过它仅仅用于存储图片。

    完成的初级效果图。这里的ztree我用的是metro的那个,但是并未引用他的js,同时也带来一些css样式问题:
    1、叶子图标我要显示为文件夹图标,

    2、编辑名称input框太小

    3、编辑名称时候,input已经超出ztree的宽度太多

    等等

    相关css:

    #picZone-main .ztree li a input.rename{
        height: 18px;
    }
    /*更改叶子节点图标*/
    #moveimgmodal .ztree li span.button.ico_docu {
        margin-right: 2px;
        background-position: -110px 0;
        vertical-align: top;
    }
    
    /*更改叶子节点图标*/
    #picZone-main .ztree li span.button.ico_docu {
        margin-right: 2px;
        background-position: -110px 0;
        vertical-align: top;
    }
    /*更改新增节点图片*/
    #picZone-main .ztree li span.button.add {
        margin-right: 2px;
        background-position: -143px 0;
        vertical-align: top;
    }
    #picZone-main .curSelectedNode_edit
    {
        overflow: hidden;
    }
    #picZone-main .curSelectedNode
    {
         auto;
        max- 185px;
        overflow: hidden;
    }
    

     还有很多没切好过来的,上面功能还有webupload插件的使用,在上传图片的时候需要做到即时显示的话

    用到的一些ztree文档之中的方法:

    <script type="text/javascript">
        var setting = {
            view: {
                addHoverDom: addHoverDom,
                removeHoverDom: removeHoverDom,
                selectedMulti: false,
                txtSelectedEnable: false
            },
            check: {
                enable: false
            },
            data: {
                simpleData: {
                    enable: true
                }
            },
            callback: {
                onClick: zTreeOnClick,
                onRemove: zTreeOnRemove,
                onRename: zTreeOnRename,
                beforeRemove: zTreeBeforeRemove,
                beforeRename: zTreeBeforeRename
            },
            edit: {
                enable: true,
                showRemoveBtn: true,
                removeTitle: "删除目录",
                renameTitle: "编辑名称",
                showRenameBtn: setRenameBtn,
                showRemoveBtn: setRemoveBtn
            }
        };
        // PHP生成好的json数据传递ztree
        var zNodes = <?php echo $allCategoryJson;?>;
        $(document).ready(function(){
            // 实例化ztree
            $.fn.zTree.init($("#treelevel"), setting, zNodes);
               var treeObj=$.fn.zTree.getZTreeObj("treelevel");
            // var sel=tree.getNodeByParam('id','${topicId}');
            var autoClickTreeNodeId=getCookie('autoClickTreeNodeId');
            var autoClickTreeNodetId=getCookie('autoClickTreeNodetId');
            // 模拟点击事件
            if (autoClickTreeNodeId!=null && autoClickTreeNodeId!="")
            {
                  //获取刷新页面前点击的节点对象
                  var sNodes = treeObj.getNodesByParam('id',autoClickTreeNodeId,null);
                  // 如果该节点有父节点就展开父节点
                  if(sNodes[0].pId)
                  {    
                      var sNodes = treeObj.getNodesByParam('id',sNodes[0].pId,null);
                      treeObj.expandNode(sNodes[0], true, false, true);
                  }
                  // 如果没有父节点就模拟点击事件
                $('#'+autoClickTreeNodetId+'_span').click();
            }
            $("#searchbyztreenodename").keyup(function(){
                searchbyztreenodename();
            });
        });
    
    </script>

    难得是接口,几乎每一个操作都是一个ajax,因为考虑性能、所以也非常多的dom操作,非常多的隐藏属性,至于ztree的方法,ztree的官方文档已经十分详尽,几乎都是用一个treenode对象执行,不得不说这是一个非常好的插件,官方非常用心地为用户考虑。

    纪念、

    至于upload也是非常简单,在博客园另一篇之中会大致描述一下,PHP上传、删除接口、文件中心。主要是分布式存储吧、、这个如何来的???其实直接用七牛云存储也行,连分布式都不用自己考虑,交钱就行、、、

    BMTSRWEBUPLOADER.creat("Img0");
    <input type="hidden" name="ads[ads_img]" id="valImg0" value=""/>
    <img class="adsImg" src="'Public/assets/css/images/NoImg.gif' id="uploaderImg0"/>
    <span class="uploadImg" id="Img0">上传</span>
    /**
      * @method webupload上传文件
      * @author xu 2017/12/09
      * @example 被实例化的ID如果是Img0,那么显示上传后回调的图片地址的img标签的id必须是uploaderImg0,存储值入库的input就得是valImg0
      */
    
    var BMTSRWEBUPLOADER = {
        creat: function(id){
    
            var imgshowId = 'uploader'+id;
            // 实例化按钮为可点击的button
            var uploader = WebUploader.create({
                auto: true,
                // swf文件路径
                swf: '<?php echo mvc::$cfg['BASE_URL'];?>/Public/assets/webuploader/Uploader.swf',
    
                // 文件接收服务端。
                server: '<?php echo mvc::$cfg['ADMIN_URL'];?>ads/fileupload?isAjax=1',
    
                // 内部根据当前运行是创建,可能是input元素,也可能是flash.
                pick: '#'+id,
    
                // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
                resize: false,
                // 限定一下文件格式
                accept: {
                    title: '图片上传',
                    extensions: 'gif,jpg,jpeg,bmp,png',
                    mimeTypes: 'image/jpg,image/jpeg,image'
                },
                fileSingleSizeLimit: 3145728
            });
            //监听上传文件格式回调
            uploader.on('error', function( type ){
                if (type=="Q_TYPE_DENIED"){
                    MESSAGE.alert("请选择 gif,jpg,jpeg,bmp,png 格式的图片");
                }else if(type=="Q_EXCEED_SIZE_LIMIT"){
                    MESSAGE.alert("图片大小不能超过3M");
                }
            });
            // 监听刚刚创建的but,当有文件加入队列的时候
            uploader.on( 'fileQueued', function( file ) {
                $("#"+imgshowId).attr('src',BASE_URL+'Public/assets/webuploader/loading.gif');
            });
    
            uploader.on( 'uploadSuccess', function(file , data ) {
                // 将上传的图片显示在显示的地方
                $("#"+imgshowId).attr('src',FILE_CENTER+data.data);
                // 传递给表单以提交数据
                $("#val"+id).val(data.data);
    
            });
    
            uploader.on( 'uploadError', function( file ) {
                console.log('上传出错!'+file);
            });
    
            uploader.on( 'uploadComplete', function( file ) {
                
            });
    
        }
    };

    至于那个PHP接口,其实就是对$_FILES操作,把文件从临时目录转移到存储目录,然后数据库插入文件储存路径那些。

  • 相关阅读:
    url路由配置及渲染方式
    django类视图介绍与类视图装饰器
    什么是数据类型
    python代码的编写和运行
    python环境搭建
    python教程(目录)
    编程语言概念
    面向对象入门
    编程语言
    Tornado框架实现图形验证码功能
  • 原文地址:https://www.cnblogs.com/xuweiqiang/p/7323421.html
Copyright © 2011-2022 走看看