• angularjs结合plupload实现文件上传


    转载注明:(罗志强的博客

    angularjs的指令directive非常好使,可以很方便的结合各种插件,实现很强大的功能。 今天用到了plupload,就拿它举例吧。

    正常的plupload用法应该是这样的

    var uploader = new plupload.Uploader({  
        runtimes : 'html5,flash,silverlight,html4',
        browse_button : 'pickfiles', 
        url : "/examples/upload",
    });
    uploader.init();  
    

    而在Angular里面,直接这么写,似乎不太优美,也不符合封装成组件的要求。 那么我们就给plupload做成angular的指令(web组件)。

    这里需要注意的是,不要将初始化操作放到Controller里面,否则它可能出错,很多封装其他插件成angular组件时,就是因为初始化顺序问题,导致各种报错。controller的执行在link之前。

    var app = angular.module('plupload', []);  
    /**
     * 文件上传指令
     * @return {[type]}           [description]
     */
    app.directive('plupload', ['$timeout', function($timeout) {  
        return {
            restrict: 'A', // E = Element, A = Attribute, C = Class, M = Comment
            link: function($scope, iElm, iAttrs, controller) {
                var uploader = new plupload.Uploader({
                    runtimes: 'html5,flash,silverlight,html4',
                    browse_button: 'uploadfile',
                    url: 'upload.php',
                    multi_selection: false,
                    filters: {
                        max_file_size: '10mb',
                        mime_types: [{
                            title: "Image files",
                            extensions: "jpg,gif,png"
                        }, {
                            title: "Zip files",
                            extensions: "zip"
                        }]
                    },
                    flash_swf_url: '/plupload/Moxie.swf',
                    silverlight_xap_url: '/plupload/Moxie.xap',
                    init: {
                        FilesAdded: function(up, files) {
                            uploader.start();
                        },
                        UploadComplete: function(up, files) {
                        }
                    }
                });
                uploader.init();
            }
        };
    }]);
    

    这样上传插件就算封装完成了。使用的时候,就先引入模块文件,然后引入模块

    var app = angular.module('app', [  
        'plupload'
    ]);
    

    使用的时候像下面这样。

    <button class="btn btn-primary btn-sm" id="uploadfile" plupload>本地上传</button>  
    

    如果在 模块app的作用域下, plupload指令就会生效了。

    上面代码是从项目里面拿出来修改的,没有经过测验。方便借鉴,如果有什么疑问,联系:(fermi)294052929@qq.com

  • 相关阅读:
    nodeJS 菜鸟入门
    Chrome 鲜为人知的秘籍(内部协议)&&Chrome功能指令大全
    前端工作面试问题
    ECharts模块化使用5分钟上手
    AppCan 之初体验
    Phonegap 环境配置
    【位运算】判断一个数是否为2的n次方
    【位运算】移位操作实现乘法运算
    O(1)时间复杂度求栈中最小元素
    Java Socket UDP编程
  • 原文地址:https://www.cnblogs.com/showstyle/p/5316089.html
Copyright © 2020-2023  润新知