zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    微信小程序前端开发中经常用到的一些好方法(待后续继续补充)
    js 滚动到指定位置的函数
    前端常用的插件网站
    电动车选购和防盗指南
    如何快速有效的投诉上海移动
    DSP中CMD文件
    碰到磁盘动态无效怎么办?
    创维37K05HR黑屏有声音故障维修
    Ubuntu桌面版本和服务器版本之间的区别(转载)
    能率热水器存在严重质量隐患!千万不要购买!买了之后每年都需要自费维修!
  • 原文地址:https://www.cnblogs.com/showstyle/p/5316089.html
Copyright © 2011-2022 走看看