前段时间做一个项目,用户提出需要一次性上传多个文件,这个多=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 代码
- function addAddition() { //新增节点
- var strInn = ";
- var strHid = ";
- otherAddition.insertAdjacentHTML("beforeEnd",strInn);
- additionName.insertAdjacentHTML("beforeEnd",strHid);
- }
- function delAddition() { //删除节点
- iIndex = otherAddition.childNodes.length
- nIndex = additionName.childNodes.length
- if(otherAddition.childNodes.length <= 2) return;
- otherAddition.removeChild(otherAddition.children(--iIndex));
- otherAddition.removeChild(otherAddition.children(--iIndex));
- additionName.removeChild(additionName.children(--nIndex));
- }
调用部分的html代码如下:
xml 代码
- <div id="otherAddition"><input type="file" onkeydown="return false" id="fileAdditions" name="fileAdditions" style="width:400"><BR><!---->div>
- <span style="cursor:hand;color:red" onclick="addAddition()">再次添加附件<!---->span> <span style="cursor:hand;color:red" onclick="delAddition()">删除附件<!---->span>
- <span id="additionName" name="additionName"><input type="hidden" id="fileName" name="fileName"><!---->span>
这样做的目的是能够通过节点的方式让用户选择的上传多个文件
注意:因为上传多个文件到WEBWORK后台时,已经选择了原有的文件名,所以只能是增加一个文件名的节点,并在ACTION里面处理(看官如果有好的见意和想法欢迎指点:)
3。完成了配置和客户端的代码后,就是后台ACTION里面的处理了
java 代码
- public String getAddtion() throws Exception {
-
- if (hasActionErrors() || hasFieldErrors()){
- System.out.println("found errors");
- }else if (fileAddition != null) {
- System.out.println("file uploaded to: " + fileAddition.getAbsolutePath());
- String uploadDir = ServletActionContext.getServletContext().getRealPath("\\upload") + "\\dc\\";
- // write the file to the file specified
- System.out.println("the upload file path->" + uploadDir);
- File dirPath = new File(uploadDir);
- if (!dirPath.exists()) {
- System.out.println("build the dir path!");
- if(!dirPath.mkdirs()) {
- olpError.setErrorName("新建目录出错!");
- olpError.setErrorCode("103");
- return ERROR;
- }
- } else
- System.out.println("the path exists");
- if (fileAddition == null) {
- log.debug("file is null!");
- }
- String filePath = uploadDir + fileAddition.getName();
-
- File target = new File(filePath);
- System.out.println("filename is :" + fileAddition.getName());
- if(target.exists()){
- target.delete();
- }
- fileAddition.renameTo(target);
- FileInputStream fis = new FileInputStream(target);
- byte[] buffer = new byte[fis.available()];
- fis.read(buffer);
- fis.close();
- //publicInfo.setInfoIname(target.getName());
- buffer = null;
- return target.getName();
-
- }else{
- if(this.opt.equals("update")) {
- PublicInfo pinfoTmp = (PublicInfo)mngPublicInfo.loadByID(publicInfo.getId());
- return pinfoTmp.getInfoIname();
- }
- }
- return "";
- } //注意,增加private File[] fileAdditions;和private String[] fileName;两个成员变理及基get,set方法在action里面
分享到:
相关推荐
WebWork提供了丰富的特性,如类型转换、验证、国际化、文件上传和下载等,这些功能使得开发者可以更高效地构建高质量的应用程序。 #### 二、文件上传基础知识 文件上传是Web应用程序中的常见需求之一。在WebWork中...
"fileupload+dwr2+webwork2实现带进度条上传文件"这个主题涉及到三个关键技术和组件:FileUpload、Direct Web Remoting (DWR) 和 WebWork2,它们协同工作以提供一个带有进度条的高效、用户友好的文件上传体验。...
SWFUpload是一个强大的JavaScript库,专门用于实现多文件上传功能。在Web开发中,尤其是在处理大量用户上传文件的场景下,SWFUpload以其高效的性能和友好的用户体验而受到青睐。这个"SWFUpload,多文件上传选择,jsp...
SWFupload利用了Adobe Flash技术,因为Flash支持在浏览器中处理大文件和多文件上传,而JavaScript则负责与HTML页面交互,处理事件和显示反馈信息。当用户在SWFupload的界面上选择文件后,Flash组件会将文件分块并...
WebWork是一个基于Java的MVC(模型-视图-控制器)框架,它允许开发者构建动态、交互式的Web应用。...在实际开发中,还需要注意文件安全、文件大小限制、多文件上传等问题,以确保应用的稳定性和安全性。
在WebWork中实现文件上传和下载是常见的功能需求,下面将详细介绍这两个过程以及可能遇到的问题。 **一、WebWork文件上传** 1. **前端页面** 在HTML页面中,你需要创建一个`<input type="file">`标签让用户选择要...
**基于WebWork的MVC框架入门详解** 在Web开发领域,Model-View-...理解这些基础概念后,你就可以逐步深入探索更复杂的WebWork应用场景,如动态方法调用、国际化、文件上传等,从而更好地驾驭这个强大的MVC框架。
Struts2和SwfUpload是两个在Web开发中用于文件上传的工具,它们结合使用可以提供一种具有用户体验优化的文件上传功能,特别是包含了进度条显示,使得用户能够清晰地了解文件上传的状态。以下是对这两个技术及其结合...
10. **文件上传**:在Struts2中,File类型的变量upfile用于存储上传文件内容,String类型的变量upfileContentType和upfileFileName分别表示文件类型和文件名。 11. **拦截器**:Struts2的defaultStack拦截器栈定义...
- 文件管理模块:用户可以上传、下载、删除文件,这需要Struts 2的动作和Hibernate的持久化操作来实现。 - 文件共享和权限控制:用户可以设定文件的访问权限,如只读、可写等,这可能需要Spring AOP实现权限拦截。...
- **功能实现**:实现用户注册登录、文件上传等功能。 #### 第三阶段:J2EE技术 本阶段将深入学习企业级Java开发的相关技术,包括流行的Web框架、持久层框架以及Spring框架等。 ##### 流行Web框架简介 - **Struts...
第17章可能涵盖了如动态方法调用、OGNL表达式、文件上传下载、国际化和本地化、Struts2与Ajax的集成等高级主题。这些特性使得Struts2能够应对复杂的Web应用场景。 **7. Hibernate集成** 在大型企业级应用中,通常会...
部署时,通常将项目打包成WAR文件,然后上传到应用服务器(如Tomcat)进行运行。 综上所述,"基于javaweb+Struts2的书籍管理系统"是一个综合运用了多种JavaWeb技术和设计模式的实际案例,对于学习和理解JavaWeb开发...
Struts2支持拦截器、类型转换、文件上传、国际化、主题等功能,这些特性使得开发者能够快速构建出稳定高效的Web应用。 ##### 2.2 AJAX技术介绍 AJAX(Asynchronous JavaScript and XML),即异步JavaScript和XML,...
Struts 2依赖于许多第三方库,如`ognl.jar`(Object-Graph Navigation Language)用于表达式语言,`xwork-core.jar`是Action和Interceptors的基础,还有` commons-fileupload.jar`和`commons-io.jar`处理文件上传,`...
实践中,你可能还会遇到异常处理、国际化、文件上传下载等功能的实现,这些都是Struts2框架的重要组成部分。 总结来说,Struts2是一个强大的MVC框架,它简化了Java Web应用的开发流程。"struts2小案例"是一个很好的...
10. 上传下载:Struts2提供了上传下载的处理机制,使开发者能够轻松实现文件的上传和下载功能。 11. 视图浅析:Struts2将视图实现的细节留给开发者,可以使用JSP、Freemarker、Velocity等模板引擎来实现。 12. ...
- **文件上传**: - 使用`<s:file>`标签上传文件。 - 在Action中获取上传的文件。 - **文件下载**: - 创建Action处理文件下载逻辑。 - 设置HTTP响应头,使浏览器识别为文件下载。 #### 十一、视图浅析 - **...