- 浏览: 279304 次
- 性别:
- 来自: 东方水城
文章分类
最新评论
-
18335864773:
pageoffice 插件 可以实现 office文档的在线操 ...
Java调用com组件操作word -
coosummer:
推荐使用在线免费bug管理系统- bug 禅思:http:// ...
Bug管理工具 -
program_coco:
柠檬bug管理系统,一个在线的bug管理系统。www.lemo ...
Bug管理工具 -
影非弦:
这个in.read(data);//data是一个byte[] ...
Java串口通信总结 -
影非弦:
这个不详细啊,我弄了一天了,都没弄出来,总是出错,读信息的时候 ...
Java串口通信总结
最近一个基于Struts的项目中要用到上传多张图片到系统中,我在网上找了一下,发现大多数都是转载的例
子,对项目的作用不大,故写下了这个例子,希望对有用到的朋友有所帮助。要求JDK1.5以上,lib库要包含如下jar文
件:antlr.jar,commons-beanutils.jar,commons-collections.jar,commons-
digester.jar,commons-fileupload.jar,commons-logging.jar,commons-
validator.jar,jakarta-oro.jar,struts.jar这些都是Struts中的jar文件以及Struts中的标签库文
件。
//可以转载,请保留出自http://www.javaresearch.org,作者anEngineer
一:web.xml文件
< ?xml version="1.0" encoding="UTF-8"?> < !DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> < web-app> < servlet> < servlet-name>actionServlet< /servlet-name> < servlet-class>org.apache.struts.action.ActionServlet< /servlet-class> < init-param> < param-name>config< /param-name> < param-value>/WEB-INF/struts-config.xml< /param-value> < /init-param> < init-param> < param-name>debug< /param-name> < param-value>2< /param-value> < /init-param> < load-on-startup>0< /load-on-startup> < /servlet> < !-- struts actionServlet mapping--> < servlet-mapping> < servlet-name>actionServlet< /servlet-name> < url-pattern>*.do< /url-pattern> < /servlet-mapping> < !-- welcome file list --> < welcome-file-list> < welcome-file>index.jsp< /welcome-file> < /welcome-file-list> < !-- error handle --> < error-page> < error-code>404< /error-code> < location>/error.jsp< /location> < /error-page> < /web-app>
二:struts-config.xml文件
< ?xml version="1.0" encoding="ISO-8859-1" ?> < !DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> < struts-config> < !-- form beans --> < form-beans> < form-bean name="uploadForm" type="org.apache.struts.action.DynaActionForm"> < form-property name="type" type ="java.lang.String[]"/> < form-property name="name" type ="java.lang.String[]"/> < form-property name="file0" type ="org.apache.struts.upload.FormFile"/> < form-property name="file1" type ="org.apache.struts.upload.FormFile"/> < form-property name="file2" type ="org.apache.struts.upload.FormFile"/> < form-property name="file3" type ="org.apache.struts.upload.FormFile"/> < form-property name="file4" type ="org.apache.struts.upload.FormFile"/> < form-property name="file5" type ="org.apache.struts.upload.FormFile"/> < form-property name="file6" type ="org.apache.struts.upload.FormFile"/> < form-property name="file7" type ="org.apache.struts.upload.FormFile"/> < form-property name="file8" type ="org.apache.struts.upload.FormFile"/> < form-property name="file9" type ="org.apache.struts.upload.FormFile"/> < /form-bean> < /form-beans> < !-- forward --> < global-forwards> < forward name= "successed" path="/index.jsp">< /forward> < forward name= "failed" path="/error.jsp">< /forward> < /global-forwards> < !-- action handle--> < action-mappings> < action path="/uploaded" type="com.fangchuang.action.UploadAction" name="uploadForm" scope="request" input="/upload.jsp"> < forward name="uploaded" path="/upload.jsp">< /forward> < /action> < /action-mappings> < /struts-config>
三:upload.jsp文件
< %@ page language="java" import="java.util.*" pageEncoding="gb2312" errorPage="error.jsp"%> < %@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> < %@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> < %@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> < %@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="title"%> < !-- 上传多个文件的jsp文件 //可以随便转载,请保留出自http://www.javaresearch.org 作者anEngineer --> < html> < head> < title>上传多个文件的jsp文件< /title> < meta http-equiv="pragma" content="no-cache"> < meta http-equiv="cache-control" content="no-cache"> < meta http-equiv="expires" content="0"> < meta http-equiv="keywords" content="struts,多个文件,上传"> < meta http-equiv="description" content="This is a test"> < /head> < body> < html:form action="uploaded.do" enctype="multipart/form-data" method="post"> < table border="1" width="80%" align="center"> < tr bgColor=#62bcff> < td align="left">文件类型< /td> < td align="left">文件描述< /td> < td align="left">文件名< /td> < /tr> < tr> < td align="left">< select name="type"> < option value="1" selected>湖南省< /option> < option value="2">湖北省< /option> < option value="3">广东省< /option> < option value="4">北京市< /option> < option value="5">上海市< /option> < /select>< /td> < td align="left">< input type="text" name="name" value="">< /td> < td align="left">< input type="file" name="file0" size="35" value=""> < /td> < /tr> < tr> < td align="left">< select name="type"> < option value="1"selected>湖南省< /option> < option value="2">湖北省< /option> < option value="3">广东省< /option> < option value="4">北京市< /option> < option value="5">上海市< /option> < /select>< /td> < td align="left">< input type="text" name="name" value="">< /td> < td align="left">< input type="file" name="file1" size="35" value=""> < /td> < /tr> < tr> < td align="left">< select name="type"> < option value="1">湖南省< /option> < option value="2"selected>湖北省< /option> < option value="3">广东省< /option> < option value="4">北京市< /option> < option value="5">上海市< /option> < /select>< /td> < td align="left">< input type="text" name="name" value="">< /td> < td align="left">< input type="file" name="file2" size="35" value=""> < /td> < /tr> < tr> < td align="left">< select name="type"> < option value="1">湖南省< /option> < option value="2"selected>湖北省< /option> < option value="3">广东省< /option> < option value="4">北京市< /option> < option value="5">上海市< /option> < /select>< /td> < td align="left">< input type="text" name="name" value="">< /td> < td align="left">< input type="file" name="file3" size="35" value=""> < /td> < /tr> < tr> < td align="left">< select name="type"> < option value="1">湖南省< /option> < option value="2">湖北省< /option> < option value="3"selected>广东省< /option> < option value="4">北京市< /option> < option value="5">上海市< /option> < /select>< /td> < td align="left">< input type="text" name="name" value="">< /td> < td align="left">< input type="file" name="file4" size="35" value=""> < /td> < /tr> < tr> < td align="left">< select name="type"> < option value="1">湖南省< /option> < option value="2">湖北省< /option> < option value="3"selected>广东省< /option> < option value="4">北京市< /option> < option value="5">上海市< /option> < /select>< /td> < td align="left">< input type="text" name="name" value="">< /td> < td align="left">< input type="file" name="file5" size="35" value=""> < /td> < /tr> < tr> < td align="left">< select name="type"> < option value="1">湖南省< /option> < option value="2">湖北省< /option> < option value="3">广东省< /option> < option value="4"selected>北京市< /option> < option value="5">上海市< /option> < /select>< /td> < td align="left">< input type="text" name="name" value="">< /td> < td align="left">< input type="file" name="file6" size="35" value=""> < /td> < /tr> < tr> < td align="left">< select name="type"> < option value="1">湖南省< /option> < option value="2">湖北省< /option> < option value="3">广东省< /option> < option value="4"selected>北京市< /option> < option value="5">上海市< /option> < /select>< /td> < td align="left">< input type="text" name="name" value="">< /td> < td align="left">< input type="file" name="file7" size="35" value=""> < /td> < /tr> < tr> < td align="left">< select name="type"> < option value="1">湖南省< /option> < option value="2">湖北省< /option> < option value="3">广东省< /option> < option value="4">北京市< /option> < option value="5"selected>上海市< /option> < /select>< /td> < td align="left">< input type="text" name="name" value="">< /td> < td align="left">< input type="file" name="file8" size="35" value=""> < /td> < /tr> < tr> < td align="left">< select name="type"> < option value="1">湖南省< /option> < option value="2">湖北省< /option> < option value="3">广东省< /option> < option value="4">北京市< /option> < option value="5"selected>上海市< /option> < /select>< /td> < td align="left">< input type="text" name="name" value="">< /td> < td align="left">< input type="file" name="file9" size="35" value=""> < /td> < /tr> < tr> < td align="left"> < /td> < td align="left"> < /td> < td align="left">< input type="submit" value="上传文件" value="submit" onclick="return(confirm('你确认要上传文件吗?'))">< /td> < /tr> < /table> < /html:form> < /body> < /html>
四:还有两个简单jsp文件index.jsp,error.jsp可以自己写。
五:action文件
package com.fangchuang.action; /** * @author anEngineer 处理上传文件action */ public class UploadAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { //可以随便转载,请保留出自http://www.javaresearch.org 作者anEngineer DynaActionForm fileForm = (DynaActionForm) form; String[] types = (String[]) fileForm.get("type"); String[] names = (String[]) fileForm.get("name"); FormFile file0 = (FormFile) fileForm.get("file0"); FormFile file1 = (FormFile) fileForm.get("file1"); FormFile file2 = (FormFile) fileForm.get("file2"); FormFile file3 = (FormFile) fileForm.get("file3"); FormFile file4 = (FormFile) fileForm.get("file4"); FormFile file5 = (FormFile) fileForm.get("file5"); FormFile file6 = (FormFile) fileForm.get("file6"); FormFile file7 = (FormFile) fileForm.get("file7"); FormFile file8 = (FormFile) fileForm.get("file8"); FormFile file9 = (FormFile) fileForm.get("file9"); Map< String, FormFile> fileMap = new HashMap< String, FormFile>(); fileMap.put("file0" + "*" + types[0] + "*" + names[0], file0); fileMap.put("file1" + "*" + types[1] + "*" + names[1], file1); fileMap.put("file2" + "*" + types[2] + "*" + names[2], file2); fileMap.put("file3" + "*" + types[3] + "*" + names[3], file3); fileMap.put("file4" + "*" + types[4] + "*" + names[4], file4); fileMap.put("file5" + "*" + types[5] + "*" + names[5], file5); fileMap.put("file6" + "*" + types[6] + "*" + names[6], file6); fileMap.put("file7" + "*" + types[7] + "*" + names[7], file7); fileMap.put("file8" + "*" + types[8] + "*" + names[8], file8); fileMap.put("file9" + "*" + types[9] + "*" + names[9], file9); Set fileSet = fileMap.entrySet(); Iterator iter = fileSet.iterator(); // 取当前系统路径E:\Tomcat5\webapps\strutsUpload\ 其中strutsUpload为当前context String filePath = this.getServlet().getServletContext().getRealPath("/"); // 保存文件的文件夹 File savePath = new File(filePath + "UploadFiles\\"); filePath = filePath+ "UploadFiles\\"; if (!savePath.exists()) { savePath.mkdir(); } while (iter.hasNext()) { Map.Entry unit = (Map.Entry) iter.next(); String key = (String) unit.getKey(); FormFile file = (FormFile) unit.getValue(); //文件大小符合要求,且是图片文件 if ((file.getFileSize() >= 1)&& DealPhoto.isPhoto(file)) { //图片类别 String photoType = key.substring(key.indexOf("*") + 1, key .lastIndexOf("*")); //图片描述 String photoName = key.substring(key.lastIndexOf("*") + 1, key .length()); //存数据库操作,在数据库中保存文件的名称,类型,及在服务器上的相对路径 // //判断是否重名 if(DealPhoto.isFileExist(file.getFileName(),filePath)) DealPhoto.rename(file.getFileName(),filePath); try { InputStream stream = file.getInputStream();// 把文件读入 // 建立一个上传文件的输出流 OutputStream bos = new FileOutputStream(filePath+file.getFileName()); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) { bos.write(buffer, 0, bytesRead);// 将文件写入服务器 } bos.close(); stream.close(); } catch (Exception e) { e.printStackTrace(); } } } return mapping.findForward("uploaded"); //还有其他可以改正的地方,如错误信息提示,把照片处理函数放到一个公用类,写文件操作等 //可以随便转载,请保留出自http://www.javaresearch.org 作者anEngineer } }
六:照片处理类文件
package com.fangchuang.run; /** * 图片处理 * @author anEngineer * */ public class DealPhoto { /** * 判断照片类型 .jpg .png .gif 目前只支持这三种格式 * @param file * @return */ public static boolean isPhoto(FormFile file) { String fileName = getString(file.getFileName()); if (fileName.equals("")) return false; if ((fileName.toLowerCase().endsWith(".jpg")) || (fileName.toLowerCase().endsWith(".gif")) || (fileName.toLowerCase().endsWith(".png"))) return true; else return false; } /** * * @param str * @return */ public static String getString(String str) { if (str == null) str = ""; if (str.equals("null")) str = ""; str = str.trim(); return str; } /** * 判断文件是否存在 * @param fileName * @param dir * @return */ public static boolean isFileExist(String fileName, String dir) { File files = new File(dir + fileName); return (files.exists()) ? true : false; } /** * 重命名 * @param fileName * @param dir */ public static void rename(String fileName, String dir) { String extendFile = ""; if (isJpg(fileName)) extendFile = ".jpg"; else if (isGif(fileName)) extendFile = ".gif"; else if (isPng(fileName)) extendFile = ".png"; else extendFile = ".jpg"; Random random = new Random(); int add = random.nextInt(10000); String ret = fileName + add + extendFile; while (isFileExist(ret, dir)) { add = random.nextInt(10000); ret = fileName + add + extendFile; } File file = new File(dir + fileName); File reFile = new File(dir + ret); file.renameTo(reFile); } public static boolean isGif(String file) { if (file.toLowerCase().endsWith(".gif")) { return true; } else { return false; } } public static boolean isJpg(String file) { if (file.toLowerCase().endsWith(".jpg")) { return true; } else { return false; } } public static boolean isPng(String file) { if (file.toLowerCase().endsWith(".png")) { return true; } else { return false; } } }
相关推荐
在这个例子中,`name="files"`的`input`元素允许用户选择多个文件,`multiple`属性表示可以同时上传多个文件。 在Struts2的动作类(Action)中,你需要创建一个List类型的属性来接收这些文件。例如: ```java ...
1.能够对多个文件进行上传(可以选择上传文件个数,也即上传文件个数不定) 2.能够对上传路径进行配置文件指定(upload.properties),使用了一些类似单例模式的静态代码块 3.Struts2进行下载处理,能对上传的所有...
每个上传的文件会被封装成`FileItem`对象,我们可以遍历这些对象,对每个文件进行处理。例如,将文件保存到服务器,或者进行一些验证操作,如检查文件类型、大小等。 总的来说,这个例子展示了如何在Struts2框架下...
在这个"struts1.2简单文件上传例子"中,我们将深入探讨Struts1.2框架如何处理文件上传功能。 首先,文件上传在Web应用中是一个常见的需求,例如用户可能需要上传个人头像、文档或者其他类型的数据。在Struts1.2中,...
以下是对"struts2 的 上传文件例子"的详细解释。 首先,我们需要了解Struts2文件上传的基本原理。Struts2使用Apache Commons FileUpload库来处理文件上传。当用户在表单中包含`<input type="file">`字段并提交表单...
总结来说,这个"EasyUI和Struts上传文件的例子"涉及到的技术点包括:Struts2框架的Action配置与文件处理,EasyUI的表单和进度条组件,多部分表单数据处理,以及JRE1.7的文件操作API。通过这个示例,开发者可以学习...
在这个"struts1文件上传的例子"中,我们将深入探讨如何在Struts1框架下实现文件上传的功能。 首先,文件上传在Web开发中是一个常见的需求,例如用户可能需要上传图片、文档或其他类型的文件。在Struts1中,这通常...
在这个“struts2文件上传例子(支持大文件)”中,我们将探讨如何利用Struts2框架实现文件上传功能,尤其是处理大文件的能力。 在Web应用中,文件上传是一项常见的需求,例如用户可能需要上传照片、文档或视频等。...
在Struts1.x中,实现文件上传功能是一个常见的需求,特别是在处理用户提交的表单时需要包含多个文件。下面我们将详细介绍如何使用Struts1.x来实现多个文件的上传。 首先,我们需要在HTML表单中添加`...
- Struts2同样支持多文件上传,只需在Action类中定义多个文件域属性,并在表单中使用多个`<s:file>`标签。 6. **最佳实践** - **安全性**:对上传的文件进行安全检查,防止上传恶意脚本或病毒。 - **性能优化**...
### Struts2实现文件上传(单个+多个文件上传) #### 一、单个文件上传 在Struts2框架中实现文件上传是一项常见的需求。本文将详细介绍如何在Struts2中实现单个文件的上传。 ##### JSP 页面设计 首先,我们需要在...
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。...在实际项目中,可能需要进一步完善如多文件上传、进度条显示等功能,但这个基本的例子已经为我们展示了核心概念和流程。
在本文中,我们将探讨如何使用Struts1框架实现文件的批量上传功能。Struts1是一个经典的Java Web应用程序框架,它提供了...通过这些步骤,我们可以构建一个完整的文件上传系统,让用户能够方便地上传多个文件到服务器。
Struts2批量上传文件是一个常见的Web开发功能,用于允许用户一次性上传多个文件。在Struts2框架中,这个功能可以通过其强大的Action支持和插件机制来实现。在本篇文章中,我们将深入探讨如何利用Struts2实现批量文件...
对于多文件上传,用户可以通过HTML表单的`<input type="file" multiple>`标签选择多个文件。然后,这些文件会在服务器端被解析并存储到你指定的位置。Struts2的拦截器会自动处理文件的解析和存储过程。 在"struts2...
要使用这个功能,我们需要在struts.xml配置文件中启用该拦截器,并在Action类中定义一个或多个`java.io.File`类型的属性,以及对应的表单字段。 在前端,你可以创建一个HTML表单,包含一个`<input type="file">`...
在Action类中,需要声明一个或多个类型为`java.io.File`的字段,以及对应的`String`类型的属性,用于保存文件的临时路径和文件名。例如: ```java public class FileUploadAction extends ActionSupport { private...
为了学习和实践Struts2的文件上传,你可以解压这个文件,查看其中的Action类、`struts.xml`配置文件,以及可能的JSP页面,以理解整个流程。 总结来说,Struts2的文件上传涉及到拦截器配置、Action类的编写以及...
当用户在表单中选择一个文件并提交时,Web服务器需要接收这个文件内容,并将其存储在服务器的某个位置。在Struts框架中,这通常涉及到ActionForm对象、DispatcherServlet以及特定的配置文件。 1. **ActionForm对象*...
SWFUpload是一款开源的Flash上传组件,它允许用户在不离开当前页面的情况下上传多个文件。通过在浏览器上嵌入一个小型的Flash对象,SWFUpload提供了一种优雅的多文件上传解决方案,同时还能显示上传进度,提高用户...