一个主要的页面,其中包裹了一个iframe页面,在项目中,这个iframe页面包裹在主页面的div标签中,主要用于上传文件附件。

用的是plupload.full插件,主要引入以下几个js:

  1. jquery-1.11.1.js
  2.  
  3. moxie.js
  4.  
  5. plupload.full.min.js
  6.  
  7. plupload.dev.js

css部分:

  1. jquery.plupload.queue.css

以下是利用该插件实现的完整的前端代码:

  1. $(window).load(function () {
  2.   var uploader = $("#uploader").pluploadQueue({
  3.     browse_button : 'uploader_browse',//开启文件上传的按钮id
  4.     runtimes: 'html5,flash,silverlight,html4',
  5.     url: "地址为传输数据地址"
  6.     max_file_size: '10mb',//最大附件大小
  7.     unique_names: true,//默认为false。当值为true时会为每个上传的文件生成一个唯一的文件名,并作为额外的参数post到服务器端,参数明为name,值为生成的文件名。
  8.     chunk_size: '2mb',
  9.     unique_names: false,
  10.     flash_swf_url: '<%=contextPath%>/scripts/plupload/js/Moxie.swf',
  11.     silverlight_xap_url: '<%=contextPath%>/scripts/plupload/js/Moxie.xap',
  12.     preinit: {
  13.       UploadComplete: function () {
  14.         window.location.reload();
  15.       }
  16.     }
  17. });
  18. uploader.init();
  19. $('form').submit(function (e) {
  20.   var uploader = $('#uploader').pluploadQueue();
  21.   if (uploader.files.length > 0) {
  22.   // When all files are uploaded submit form
  23.   uploader.bind('StateChanged', function () {
  24.     if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {
  25.     $('form')[0].submit();
  26.     }
  27.   });
  28.   uploader.start();
  29.   } else {
  30.    //alert('请先上传数据文件.');
  31.   }
  32.   return false;
  33. });
  34.  
  35. if (uploader == null) {
  36.   return;
  37. }
  38. uploader.bind('UploadComplete', function (uploader, files) {
  39. window.location.reload();
  40. });
  41.  
  42. uploader.bind('FilesAdded', function (uploader, files) {
  43.  
  44. var _h = 37;
  45. if (navigator.userAgent.indexOf("MSIE 6.0") > 0) {
  46. _h = 35;
  47. }
  48. if (uploader.files.length > 0) {
  49. $(".moxie-shim").css({top: $(".plupload_add").position().top - _h + (_h)});
  50. } else {
  51. $(".moxie-shim").css({top: $(".plupload_add").position().top - _h});
  52. }
  53. window.parent.SetCwinHeight2("claimFileList");
  54. });
  55.  
  56. uploader.bind('FilesRemoved', function (uploader, files) {
  57. var _h = 37;
  58. if (navigator.userAgent.indexOf("MSIE 6.0") > 0) {
  59. _h = 35;
  60. }
  61. if (uploader.files.length > 0) {
  62. $(".moxie-shim").css({top: $(".plupload_add").position().top - _h + (_h)});
  63. } else {
  64. $(".moxie-shim").css({top: $(".plupload_add").position().top});
  65. }
  66. window.parent.SetCwinHeight2("claimFileList");
  67. });
  68.  
  69. uploader.bind('BeforeUpload', function (uploader, files) {
  70.   var docName = $(".plupload_delete .plupload_file_name").text();
  71.   var urlStr = "上传参数保存地址"
  72.   uploader.setOption("url", urlStr);
  73.  
  74.   var EASFileDocName = "";
  75.   var items = $("#SelectorOptions a");
  76.   for (var i = 0; i < items.length; i++) {
  77.   if (items[i].innerText) {
  78.     EASFileDocName += "&eas&" + items[i].innerText;
  79.     }
  80.   }
  81.   if (EASFileDocName.indexOf("&eas&" + docName) < 0) {
  82.     EASFileDocName += "&eas&" + docName;
  83.   }
  84.   EASFileDocName = EASFileDocName.substring(5);
  85.     setCookie("EASFileDocName", EASFileDocName, 365);
  86.   });
  87.  
  88.   var EASFileDocName = getCookie("EASFileDocName");
  89.     if (EASFileDocName) {
  90.     var dns = EASFileDocName.split("&eas&");
  91.     for (var i = 0; i < dns.length; i++) {
  92.     $("#SelectorOptions").append("<li><a href='javascript:void(0)'>" + dns[i] + "</a></li>");
  93.     }
  94.   }
  95.  
  96. var items = $("#SelectorOptions a");
  97. $("#SelectorArr").click(function () {
  98. $("#SelectorOptions")[0].style.display = $("#SelectorOptions")[0].style.display == "block" ? "none" : "block";
  99. });
  100. for (var i = 0; i < items.length; i++) {
  101. items[i].onclick = function () {
  102. $("#SelectorOptions").hide();
  103. $("#docNameInput").val(this.innerText);
  104. };
  105. }
  106. });
  107. function testForm() {
  108.  
  109. }
  110. function deleteFile(id){
  111. var onReturn = confirm("确认删除附件吗?");
  112. if(!onReturn){
  113. return;
  114. }
  115. document.getElementById('fileId').value = id;
  116.   loadingBox_simple();
  117.   var action = "删除文件时的数据发送地址";
  118.   document.getElementById('listfile').action = action;
  119.   document.getElementById('listfile').submit();
  120.  }
  121.  
  122. function viewDoc_old(docFile)
  123. {
  124. XMLHttp.sendReq("post", "url"" , function(http_request){
  125. var rspText=http_request.responseText;
  126. var isTrue=false;
  127. if(rspText!=""){
  128. var results=http_request.responseXML;
  129. var rsflag=results.getElementsByTagName("rsflag")[0].childNodes;
  130. var flag=getNodeValue(rsflag[0]);
  131. }else{
  132. isTrue=false;
  133. //转换错误
  134. MessageBox.alert("\u751f\u6210\u9884\u89c8\u6587\u6863\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5\uff01");
  135. return;
  136. }
  137. });
  138. }
  139.  
  140. function viewDoc(docFile){
  141. var path = 'url';
  142. // var params = 'claimNo='+claimNo;
  143. var params = '';
  144.  
  145. XMLHttp.sendReq("post", path,params, showResultInfo);
  146. MessageBox.alert("正在生成文档预览视图,请稍候...");
  147. }
  148.  
  149. function showResultInfo(http_request){
  150. var rspText=http_request.responseText;
  151. alert(rspText);
  152. if(rspText!=""){
  153. cancelDivBox("screen_div_p","screen_box_p","screen_iframe_p");
  154. MessageBox.alert(rspText);
  155. }
  156. }

  这些为前端利用插件对附件进行上传的代码,在本人目前参与的项目中有效。

  需要使用指南可参考该地址:http://www.cnblogs.com/2050/p/3913184.html

(该插件在谷歌主流楼浏览器内没问题,但是在IE和火狐就有bug,在本人此次的项目中,不管用哪个版本的插件,bug是一直存在的(即在ie和火狐中第一次点击无效),所以只能想其他办法,而我的办法是在页面加载完之后,对iframe页面进行一个首次刷新,具体见下页)

前端上传插件Plupload的实际使用(个人实操)的更多相关文章

  1. 前端上传组件Plupload使用指南

    我之前写过一篇文章<文件上传利器SWFUpload使用指南>,里面介绍了上传组件SWFUpload的使用方法,但现在随着html5技术的逐渐推广和普及,再去使用以flash为上传手段的SW ...

  2. 【转】前端上传组件Plupload

    [转自博客园-无双] html5原生的给我们提供了文件上传的API,Plupload是一款由著名的web编辑器TinyMCE团队开发的上传组件,简单易用且功能强大,我们完全可以使用Plupload来代 ...

  3. 【转】前端上传组件Plupload使用指南

    http://www.cnblogs.com/2050/p/3913184.html Plupload有以下功能和特点: 1.拥有多种上传方式:HTML5.flash.silverlight以及传统的 ...

  4. [Pulgin] 前端上传组件Plupload使用指南

    我之前写过一篇文章<文件上传利器SWFUpload使用指南>,里面介绍了上传组件SWFUpload的使用方法,但现在随着html5技术的逐渐推广和普及,再去使用以flash为上传手段的SW ...

  5. 文件上传插件 -- plupload

    refresh:重新实例化uploader removeFile(id):从file中移除某个文件 splice(start,length):从队列中start开始删除length个文件, 返回被删除 ...

  6. 前端上传组件 - Plupload

    http://www.cnblogs.com/KTblog/p/4740852.html 效果: 起始界面. ------------- 可以上上传单个文件. ------------- 可以上传多个 ...

  7. 多图片/文件上传 - SwfUpload/PlUpload

    <文件上传利器SWFUpload使用指南> <前端上传组件Plupload使用指南>

  8. JEECG 上传插件升级-标签

    前言: 现有的uploadify上传是基于swf的,随着H5的普及,flash即将退出历史舞台,JEECG团队本着与时俱进的原则,将全面升级JEECG系统中的上传功能,采用新式上传插件plupload ...

  9. JEECG 上传插件升级-代码生成器

    前言: 现有的uploadify上传是基于swf的,随着H5的普及,flash即将退出历史舞台,JEECG本着与时俱进的原则,将全面升级JEECG系统中的上传功能,采用新式上传插件plupload,此 ...

随机推荐

  1. vue不支持IE8的原因

    当你把一个普通的 JavaScript 对象传给 Vue 实例的 data 选项,Vue 将遍历此对象所有的属性, 并使用 Object.defineProperty 把这些属性全部转为 getter ...

  2. linux 查看某进程 并杀死进程 ps grep kill

    Linux 中使用top 或 ps 查看进程使用kill杀死进程 1.使用top查看进程: $top 进行执行如上命令即可查看top!但是难点在如何以进程的cpu占用量进行排序呢? cpu占用量排序执 ...

  3. MTCNN人脸检测识别笔记

    论文:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 论文链接:https:// ...

  4. 十五、事务(Transaction)

    1.事务是什么? 2.示例 查询事务的隔离级别, 1>会话级(select @@tx_isolation或select @@session.tx_isolation) 2>全局级(sele ...

  5. Firebug的安装与使用

    第一步,点击 Firefox 浏览器上的“工具”选项,然后点击“附加软件”,在弹出的小窗口中,点击右下角的“获取扩展”选项,如图 4 所示. 图 4. 获取扩展 第二步,在点击“获取扩展”选项后,打开 ...

  6. java读取文件:文本文件

    一般使用串行方式读出或者写入文件.总的来说,使用输入流把文件内容读入内存,使用输出流把内存中的信息写出到文件.这些类位于java.io包下.输入和输出的类和方法往往是对应的 文本文件 先了解如何读写文 ...

  7. 51nod 1413

    思路: 直接在串里找个最大的值就好了: #include <cstdio> #include <cstring> #include <cstdlib> #inclu ...

  8. 3d工具收集

    Poser 是Metacreations公司推出的一款三维动物.人体造型和三维人体动画制作的极品软件.用过Poser 2与Poser 3的朋友一定能感受到Poser的人体设计和动画制作是那么的轻松自如 ...

  9. bzoj 2395: [Balkan 2011]Timeismoney【计算几何+最小生成树】

    妙啊,是一个逼近(?)的做法 把两个值最为平面上的点坐标,然后答案也是一个点. 首先求出可能是答案的点xy分别是按照c和t排序做最小生成树的答案,然后考虑比这两个点的答案小的答案,一定在xy连线靠近原 ...

  10. bzoj 3653: 谈笑风生【dfs序+主席树】

    考虑b的两种情况,一种是p的祖先,这种点有min(k,de[p]-1)个,然后每个这种b都有si[p]-1个c点可选: 另一种是p的子孙,要求是在p的子树内且deep在de[p]+1~de[p]+k之 ...