Swfupload实现多文件上传

来源:互联网 发布:sql server 2008配置 编辑:程序博客网 时间:2024/04/25 21:07

需求和解决方案


传统的html文件域控件只支持单文件上传,用过网盘的同志都知道,有些时候是必须要使用多文件上传的。比如网上的相册上传照片。

这种需求可以由swfupload实现,115网盘就是使用的这种实现。

演示效果http://demo.swfupload.org/v220/

下载地址http://code.google.com/p/swfupload/


Swf简介


SWFUpload最初是由Vinterwebb.se开发的一个客户端的上传工具它结合了FLASHJavaScript的功能,以提供一种超越了传统的浏览器中<input type="file" />标签提供的文件上传功能。


实现


上传页面:

[html] view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  7. <html>  
  8.   <head>  
  9.     <link href="<%=basePath%>css/default.css" rel="stylesheet" type="text/css" />  
  10.     <script type="text/javascript" src="<%=basePath%>js/swfupload.js"></script>  
  11.     <script type="text/javascript" src="<%=basePath%>js/swfupload.queue.js"></script>  
  12.     <script type="text/javascript" src="<%=basePath%>js/fileprogress.js"></script>  
  13.     <script type="text/javascript" src="<%=basePath%>js/handlers.js"></script>  
  14.      
  15.      
  16.    <script type="text/javascript">  
  17. var upload1, upload2;  
  18. window.onload = function() {  
  19. //在window的载入时初始化swfupload对象  
  20. upload1 = new SWFUpload({  
  21. //提交路径  
  22. upload_url: "upload.action",  
  23. //向后台传递额外的参数  
  24. //提交到服务器的参数信息,这样就添加了一个param参数,值是uploadParams在服务器端用request.getParameter(“param”)就可以拿到值  
  25. post_params: {"name" : "kaobian"},  
  26. //上传文件的名称  
  27. file_post_name: "file",  
  28. file_size_limit : "102400", // 100MB  
  29. file_types : "*.*",  
  30. file_types_description : "All Files",  
  31. file_upload_limit : "10",  
  32. file_queue_limit : "0",  
  33. // 事件处理  
  34. file_dialog_start_handler : fileDialogStart,  
  35. file_queued_handler : fileQueued,  
  36. file_queue_error_handler : fileQueueError,  
  37. file_dialog_complete_handler : fileDialogComplete,  
  38. upload_start_handler : uploadStart,  
  39. upload_progress_handler : uploadProgress,  
  40. upload_error_handler : uploadError,  
  41. upload_success_handler : uploadSuccess,  
  42. upload_complete_handler : uploadComplete,  
  43. // 按钮的处理  
  44. button_image_url : "images/XPButtonUploadText_61x22.png",  
  45. button_placeholder_id : "spanButtonPlaceholder1",  
  46. button_width: 61,  
  47. button_height: 22,  
  48. // Flash Settings  
  49. flash_url : "js/swfupload.swf",  
  50. custom_settings : {  
  51. progressTarget : "fsUploadProgress1",  
  52. cancelButtonId : "btnCancel1"  
  53. },  
  54. // Debug Settings  
  55. debug: false  
  56. });  
  57.      }  
  58.       
  59. </script>  
  60.   </head>  
  61.     
  62.   <body>  
  63.   <div id="content">  
  64.     
  65.     <form action="upload.action" method="post" name="thisform" enctype="multipart/form-data">  
  66. <table>  
  67. <tr valign="top">  
  68. <td>  
  69. <div>  
  70. <div class="fieldset flash" id="fsUploadProgress1">  
  71. <span class="legend">文件上传</span>  
  72. </div>  
  73. <div style="padding-left: 5px;">  
  74. <span id="spanButtonPlaceholder1"></span>  
  75. <input id="btnCancel1" type="button" value="Cancel Uploads" onclick="cancelQueue(upload1);" disabled="disabled" style="margin-left: 2px; height: 22px; font-size: 8pt;" />  
  76. <br />  
  77. </div>  
  78. </div>  
  79. </td>  
  80. </tr>  
  81. </table>  
  82.     </form>  
  83.     </div>  
  84.   </body>  
  85. </html>  



这个文件的重点是:



1.引用文件,这里面引用的js和swf一个都不能少。

2.swfupload对象的初始化,这些js语句配置了一个swfupload对象,理解配置是一个重点。

使用swfupload实现多文件上传的思路是在客户端通过选众多个文件,生成一个文件上传队列,这个队列中的每一个文件就相当于一个传统的文件域。所以在服务器端是没有任何变化的。


完整项目下载


Swfupload + struts2多文件上传案例下载

http://download.csdn.net/detail/yanwushu/4404705

0 0
原创粉丝点击