plupload 实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了plupload 实例相关的知识,希望对你有一定的参考价值。

引入js

<script type="text/javascript" src="/js/Uploadify/plupload.min.js"></script>

官网下载地址:http://www.plupload.com/download/

前台html代码

<div id="container">
         <a id="pickfiles" href="javascript:;">上传附件</a>
</div>

实例化plupload控件

  1 var fileNameList = [];//附件总列表
  2 var uploadSuccessList = [];//已上传附件列表
  3 var fileSizes = 0; //已在列表中附件总大小。
  4 var uploader = new plupload.Uploader({
  5         //runtimes: ‘gears,silverlight,html5‘,
  6         //runtimes : ‘html5,flash,silverlight,html4‘,//选择方式执行
  7         browse_button: pickfiles, // 触发文件选择对话框的按钮,为那个元素id
  8         container: document.getElementById(container), // ... or DOM Element itself
  9         url: /_Layouts/15/ApproveListHandler.aspx?Type=UpLoadAttachment, //服务器端的上传页面地址
 10         flash_swf_url: /js/Uploadify/Moxie.swf, //swf文件,当需要使用swf方式进行上传时需要配置该参数
 11         max_file_size: 100mb,//限制为100MB
 12         filters: {
 13             //max_file_size: ‘100mb‘, //最大只能上传10mb的文件
 14             prevent_duplicates: true //不允许选取重复文件
 15         },//文件
 16         silverlight_xap_url: /js/Uploadify/Moxie.xap, //silverlight文件,当需要使用silverlight方式进行上传时需要配置该参数
 17         init: {
 18             PostInit: function () {
 19                 控件初始化完成后执行。                
 20             },
 21             FilesAdded: function (up, files) {
 22                 var isAdd = true;//判断是否有0字节附件。
 23                 var sizes = 0;//上传附件总大小。
 24                 var fileName="";
 25                 var currentSize=0;//每次上传的附件总大小。
 26                 var tempLength = files.length;
 27                 
 28                 for (var m = 0; m <= tempLength - 1; m++) {
 29                     var fileSize = files[m].size;
 30                         //判断附件是否为空
 31                     if(fileSize==0)
 32                     {
 33                         isAdd = false;
 34                         fileName=files[m].name;
 35                         break;
 36                     }
 37                     currentSize+=fileSize;    //计算本次上传附件总大小。              
 38                 }
 39 
 40                 //判断是否为0字节附件。为空附件不进行上传
 41                 if (!isAdd) {
 42             bulletFrame("附件  "+fileName+"  大小不能为空!");
 43                         for (var m = tempLength - 1; m >= 0; m--) {
 44                         uploader.removeFile(files[m].id);
 45                         files.splice(m, 1);
 46                     }
 47                 }
 48                 
 49         sizes += fileSizes + currentSize;     //上次附件大小+本次上传附件大小
 50                 
 51                 //总大小不超过200M
 52                 if (sizes > (200*1024*1024)) {
 53                     bulletFrame("附件总大小不能超过200M!");
 54                     //isAdd = false;
 55                     for (var m = tempLength - 1; m >= 0; m--) {
 56                         uploader.removeFile(files[m].id);
 57                         files.splice(m, 1);
 58                     }
 59                 }
 60    
 61                 附件大小不超过10个
 62                 var count = files.length + fileNameList.length;
 63                 if (count > 10) {
 64                     bulletFrame("附件数量不能超过10个!");
 65                     var addFile = files.length - (count - 10) - 1,
 66                     tempLength = files.length;
 67                     for (var m = tempLength - 1; m > addFile; m--) {
 68                         uploader.removeFile(files[m].id);
 69                         files.splice(m, 1);
 70                     }
 71                 }
 72 
 73                 plupload.each(files, function (file) {
 74                     var fSize = file.size;
 75                     fileSizes += fSize;
 76                     fileNameList.push(file.name);
 77                     $("#attTable").append("<tr class=‘attContent‘><td class=‘att_title‘ title=‘" + file.name + "‘>" + subString(file.name, 40) + "(" + plupload.formatSize(file.size) + ")" + "</td><td id=‘" + file.id + "‘ class=‘delTd‘><img src=‘/images/selected/list_delete.png‘></td></tr>");
 78                //删除队列中附件
 79                $("#" + file.id).click(function (q) {
 80                         $(this).parent().remove();
 81                         
 82                         for(var i=0;i<=fileNameList.length-1;i++){
 83                             if(fileNameList[i]==file.name){
 84                             fileNameList.splice(i,1);//删除已在列表中的附件
 85                             }
 86                         }
 87                         
 88                         var fSize = file.size;
 89                            
 90                             fileSizes -= fSize;//减少附件大小
 91                                                 
 92                         up.removeFile(file);
 93                         if ($("#attTable tr").length <= 3) {
 94                             $(".attDivContent").removeClass("attAddShow");
 95 
 96                             $(".att_title").removeClass("att_add_title");
 97                         }
 98                     });
 99 
100                 });
101 
102                 if ($("#attTable tr").length > 3) {
103                     $(".attDivContent").addClass("attAddShow");
104 
105                     $(".att_title").addClass("att_add_title");
106                 }
107             },
108 
109             FileUploaded: function (up, file, res) {
110                //上传成功后添加在列表
111                 uploadSuccessList.push(file.name);
112             },
113 
114             UploadComplete: function (up, file) {
115                 //附件是否全部上传
116                 if (uploadSuccessList.length != uploader.files.length) {
117                     bulletFrame("附件未全部上传,请删除上传失败的附件!");
118                     AttModal.close();
119                     return;
120                 }
121 
122                 var user = getUserInfo();
123                 var ccuser = getCCUserInfo();
124                 var txtContent = $("#txtContent").val().replace(/\n|\r\n/g, "<br />");
125                 $.ajax({
126                     type: "POST",
127                     dataType: "text",
128                     url: /_Layouts/15/ApproveListHandler.aspx,      //提交到一般处理程序请求数据   
129                     data: "Type=AddApprove&itemTitle=" + $("#txtTitle").val() + "&itemContent=" + encodeURI(txtContent) + "&itemuser=" + user + "&itemccuser=" + ccuser + "&itemAtt=" + uploadSuccessList.join("*") + "&listName=" + listName + "&itemId=" + 0,          //提交参数           
130                     success: function (result) {
131                         if (result > 0) {
132                             //操作成功初始化参数
133                             AttModal.close(); 
134                             fileNameList = [];
135                             uploadSuccessList = [];
136                             fileSizes = 0;
137                             uploader.splice(0, uploader.files.length);
138 
139                             alert("操作成功!");
140                             
141                         }
142                         else {
143                             AttModal.close();
144                             alert("操作失败!");
145                         }
146                     }
147                 });
148 
149             },
150 
151             Error: function (up, err) {
152                 if (err.code == -600) {
153                     bulletFrame("文件:" + err.file.name + "   大小不能超过100mb!");
154                 } else if (err.code == -601) {
155                     bulletFrame("文件:" + err.file.name + "   上传的格式有误!");
156                 } else if (err.code == -602) {
157                     bulletFrame("文件:" + err.file.name + "   文件名重复!");
158                 }
159                 else {
160                     bulletFrame("文件:" + err.file.name + "   " + err.message);
161                 }
162 
163 
164             }
165         }
166     });
167                 


   //在实例对象上调用init()方法进行初始化
    uploader.init();

  //执行方法:

  uploader.start();

 

以上是关于plupload 实例的主要内容,如果未能解决你的问题,请参考以下文章

前端上传控件plupload总结

Plupload插件使用整理

plUpload - 服务器端错误未显示

Plupload .csv 问题

Plupload 错误 -200 HTTP 错误

文件上传plupload组件使用