`
leng_cn
  • 浏览: 301979 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

WEBWORK+javascript写的多文件上传

阅读更多
前段时间做一个项目,用户提出需要一次性上传多个文件,这个多=X,就是不确定,于是在客户端采用脚本(JAVASCRIPT)的方式来满足了用户的需求。

1。此项目采用的是WEBWORK的框架结构,webwork 文件上传采用拦截器的方式,叫fileUpload 可供选择的上传组件有pell和JAKATA和COS,具体的使用是通过webwork.properties这个文件来配置的,即

### Parser to handle HTTP POST requests, encoded using the MIME-type multipart/form-data
#webwork.multipart.parser=cos
webwork.multipart.parser=pell
在这里我采用了PELL的方式
注意:在使用这三种方式时,都会使用到相应的JAR包,PELL的方式会使用一个LOG4及pell-multpart.jar,初学使用者一定要注意

2。客户端脚本是通过新增一个文件上传的节点来实现的,这个新增的文件上传的HTML节点具有相同的名字,部分代码如下:
<script language="javascript" type="text/javascript"></script>
js 代码
 
  1.     function addAddition() {  //新增节点
  2.         var strInn = ";  
  3.         var strHid = ";  
  4.         otherAddition.insertAdjacentHTML("beforeEnd",strInn);  
  5.         additionName.insertAdjacentHTML("beforeEnd",strHid);  
  6.     }  
  7.     function delAddition() {  //删除节点
  8.         iIndex = otherAddition.childNodes.length  
  9.         nIndex = additionName.childNodes.length  
  10.         if(otherAddition.childNodes.length <= 2) return;  
  11.         otherAddition.removeChild(otherAddition.children(--iIndex));  
  12.         otherAddition.removeChild(otherAddition.children(--iIndex));  
  13.         additionName.removeChild(additionName.children(--nIndex));  
  14.     }  
调用部分的html代码如下:
xml 代码
 
  1. <div id="otherAddition"><input type="file" onkeydown="return false" id="fileAdditions" name="fileAdditions" style="width:400"><BR><!---->div>  
  2.       <span style="cursor:hand;color:red" onclick="addAddition()">再次添加附件<!---->span>  <span style="cursor:hand;color:red" onclick="delAddition()">删除附件<!---->span>  
  3.       <span id="additionName" name="additionName"><input type="hidden" id="fileName" name="fileName"><!---->span>  


这样做的目的是能够通过节点的方式让用户选择的上传多个文件
注意:因为上传多个文件到WEBWORK后台时,已经选择了原有的文件名,所以只能是增加一个文件名的节点,并在ACTION里面处理(看官如果有好的见意和想法欢迎指点:)

3。完成了配置和客户端的代码后,就是后台ACTION里面的处理了
java 代码
 
  1. public String getAddtion() throws Exception {  
  2.       
  3.     if (hasActionErrors() || hasFieldErrors()){  
  4.         System.out.println("found errors");  
  5.     }else if (fileAddition != null) {  
  6.         System.out.println("file uploaded to: " + fileAddition.getAbsolutePath());  
  7.         String uploadDir = ServletActionContext.getServletContext().getRealPath("\\upload") + "\\dc\\"; 
  8.         // write the file to the file specified 
  9.         System.out.println("the upload file path->" + uploadDir); 
  10.         File dirPath = new File(uploadDir); 
  11.         if (!dirPath.exists()) { 
  12.             System.out.println("build the dir path!"); 
  13.             if(!dirPath.mkdirs()) { 
  14.                 olpError.setErrorName("新建目录出错!"); 
  15.                 olpError.setErrorCode("103"); 
  16.                 return ERROR; 
  17.             } 
  18.         } else 
  19.             System.out.println("the path exists"); 
  20.         if (fileAddition == null) { 
  21.             log.debug("file is null!"); 
  22.         } 
  23.         String filePath = uploadDir + fileAddition.getName(); 
  24.          
  25.         File target = new File(filePath); 
  26.         System.out.println("filename is :" + fileAddition.getName()); 
  27.         if(target.exists()){ 
  28.             target.delete(); 
  29.         } 
  30.         fileAddition.renameTo(target); 
  31.         FileInputStream fis = new FileInputStream(target); 
  32.         byte[] buffer = new byte[fis.available()]; 
  33.         fis.read(buffer); 
  34.         fis.close();  
  35.         //publicInfo.setInfoIname(target.getName()); 
  36.         buffer = null; 
  37.         return target.getName(); 
  38.          
  39.     }else{ 
  40.         if(this.opt.equals("update")) { 
  41.             PublicInfo pinfoTmp = (PublicInfo)mngPublicInfo.loadByID(publicInfo.getId()); 
  42.             return pinfoTmp.getInfoIname(); 
  43.         } 
  44.     } 
  45.     return "";  
  46. }  //注意,增加private File[] fileAdditions;和private String[] fileName;两个成员变理及基get,set方法在action里面
分享到:
评论
2 楼 wrong1111 2009-08-06  
其实原理有些类似于多选框。。前面的name 都一样,后面action里面设一个数据组来接收。。。

在这里是文件上传,所以是以文件数组形式
1 楼 xueshuanglong 2009-04-17  
能否发了例子说明一下

相关推荐

    webwork 上传文件与下载文件 使用笔记

    WebWork提供了丰富的特性,如类型转换、验证、国际化、文件上传和下载等,这些功能使得开发者可以更高效地构建高质量的应用程序。 #### 二、文件上传基础知识 文件上传是Web应用程序中的常见需求之一。在WebWork中...

    fileupload+dwr2+webwork2实现带进度条上传文件

    "fileupload+dwr2+webwork2实现带进度条上传文件"这个主题涉及到三个关键技术和组件:FileUpload、Direct Web Remoting (DWR) 和 WebWork2,它们协同工作以提供一个带有进度条的高效、用户友好的文件上传体验。...

    SWFUpload,多文件上传选择,jsp版

    SWFUpload是一个强大的JavaScript库,专门用于实现多文件上传功能。在Web开发中,尤其是在处理大量用户上传文件的场景下,SWFUpload以其高效的性能和友好的用户体验而受到青睐。这个"SWFUpload,多文件上传选择,jsp...

    SWFupload_文件批量上传

    SWFupload利用了Adobe Flash技术,因为Flash支持在浏览器中处理大文件和多文件上传,而JavaScript则负责与HTML页面交互,处理事件和显示反馈信息。当用户在SWFupload的界面上选择文件后,Flash组件会将文件分块并...

    WebWork上传下载功能小记.pdf

    WebWork是一个基于Java的MVC(模型-视图-控制器)框架,它允许开发者构建动态、交互式的Web应用。...在实际开发中,还需要注意文件安全、文件大小限制、多文件上传等问题,以确保应用的稳定性和安全性。

    WebWork上传下载

    在WebWork中实现文件上传和下载是常见的功能需求,下面将详细介绍这两个过程以及可能遇到的问题。 **一、WebWork文件上传** 1. **前端页面** 在HTML页面中,你需要创建一个`&lt;input type="file"&gt;`标签让用户选择要...

    基于webWork的MVC入门例子

    **基于WebWork的MVC框架入门详解** 在Web开发领域,Model-View-...理解这些基础概念后,你就可以逐步深入探索更复杂的WebWork应用场景,如动态方法调用、国际化、文件上传等,从而更好地驾驭这个强大的MVC框架。

    struts2+swfupload上传

    Struts2和SwfUpload是两个在Web开发中用于文件上传的工具,它们结合使用可以提供一种具有用户体验优化的文件上传功能,特别是包含了进度条显示,使得用户能够清晰地了解文件上传的状态。以下是对这两个技术及其结合...

    企业级java-II---综合测试.doc

    10. **文件上传**:在Struts2中,File类型的变量upfile用于存储上传文件内容,String类型的变量upfileContentType和upfileFileName分别表示文件类型和文件名。 11. **拦截器**:Struts2的defaultStack拦截器栈定义...

    net-disk.rar_网络硬盘

    - 文件管理模块:用户可以上传、下载、删除文件,这需要Struts 2的动作和Hibernate的持久化操作来实现。 - 文件共享和权限控制:用户可以设定文件的访问权限,如只读、可写等,这可能需要Spring AOP实现权限拦截。...

    java初学者的比较好的学习路线(转)

    - **功能实现**:实现用户注册登录、文件上传等功能。 #### 第三阶段:J2EE技术 本阶段将深入学习企业级Java开发的相关技术,包括流行的Web框架、持久层框架以及Spring框架等。 ##### 流行Web框架简介 - **Struts...

    java web整合开发王者归来光盘代码-Struts2.x 概述、高级应用

    第17章可能涵盖了如动态方法调用、OGNL表达式、文件上传下载、国际化和本地化、Struts2与Ajax的集成等高级主题。这些特性使得Struts2能够应对复杂的Web应用场景。 **7. Hibernate集成** 在大型企业级应用中,通常会...

    基于 javaweb+Struts2 的书籍管理系统.zip

    部署时,通常将项目打包成WAR文件,然后上传到应用服务器(如Tomcat)进行运行。 综上所述,"基于javaweb+Struts2的书籍管理系统"是一个综合运用了多种JavaWeb技术和设计模式的实际案例,对于学习和理解JavaWeb开发...

    struts2+ajax 无刷新验证身份证号是否已注册,身份证号是否正确

    Struts2支持拦截器、类型转换、文件上传、国际化、主题等功能,这些特性使得开发者能够快速构建出稳定高效的Web应用。 ##### 2.2 AJAX技术介绍 AJAX(Asynchronous JavaScript and XML),即异步JavaScript和XML,...

    struts所需要的jar包

    Struts 2依赖于许多第三方库,如`ognl.jar`(Object-Graph Navigation Language)用于表达式语言,`xwork-core.jar`是Action和Interceptors的基础,还有` commons-fileupload.jar`和`commons-io.jar`处理文件上传,`...

    strust2小案例

    实践中,你可能还会遇到异常处理、国际化、文件上传下载等功能的实现,这些都是Struts2框架的重要组成部分。 总结来说,Struts2是一个强大的MVC框架,它简化了Java Web应用的开发流程。"struts2小案例"是一个很好的...

    struts2经典入门教程

    10. 上传下载:Struts2提供了上传下载的处理机制,使开发者能够轻松实现文件的上传和下载功能。 11. 视图浅析:Struts2将视图实现的细节留给开发者,可以使用JSP、Freemarker、Velocity等模板引擎来实现。 12. ...

    网络第一份struts2.0学习文档

    - **文件上传**: - 使用`&lt;s:file&gt;`标签上传文件。 - 在Action中获取上传的文件。 - **文件下载**: - 创建Action处理文件下载逻辑。 - 设置HTTP响应头,使浏览器识别为文件下载。 #### 十一、视图浅析 - **...

Global site tag (gtag.js) - Google Analytics