知识大全 Struts上传多个文件的例子

Posted 文件

篇首语:当筵意气临九霄,星离雨散不终朝。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Struts上传多个文件的例子相关的知识,希望对你有一定的参考价值。

J2EE综合:Struts上传多个文件的例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    最近一个基于Struts的项目中要用到上传多张图片到系统中 我在网上找了一下 发现大多数都是转载的例子 对项目的作用不大 故写下了这个例子 希望对有用到的朋友有所帮助 要求JDK 以上 lib库要包含如下jar文件 antlr jar mons beanutils jar mons collections jar mons digester jar mons fileupload jar mons logging jar mons validator jar jakarta oro jar struts jar这些都是Struts中的jar文件以及Struts中的标签库文件

  一 web xml文件

  < ?xml version= encoding= UTF ?>

  < !DOCTYPE web app

  PUBLIC //Sun Microsystems Inc //DTD Web Application //EN

   app_ _ dtd >

  < web app>

  < servlet>

  < servlet name>actionServlet< /servlet name>

  < servlet class> 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> < /param value>

  < /init param>

  < load on startup> < /load on startup>

  < /servlet>

  < ! struts actionServlet mapping >

  < servlet mapping>

  < servlet name>actionServlet< /servlet name>

  < url pattern>* do< /url pattern>

  < /servlet mapping>

  < ! wele file list >

  < wele file list>

  < wele file>index jsp< /wele file>

  < /wele file list>

  < ! error handle >

  < error page>

  < error code> < /error code>

  < location>/error jsp< /location>

  < /error page>

  < /web app>

  二 struts config xml文件

  < ?xml version= encoding= ISO ?>

  < !DOCTYPE struts config PUBLIC

   //Apache Sofare Foundation//DTD Struts Configuration //EN

   config_ _ dtd >

  < struts config>

  < ! form beans >

  < form beans>

  < form bean name= uploadForm type= apache struts action DynaActionForm >

  < form property name= type type = java lang String[] />

  < form property name= name type = java lang String[] />

  < form property name= file type = apache struts upload FormFile />

  < form property name= file type = apache struts upload FormFile />

  < form property name= file type = apache struts upload FormFile />

  < form property name= file type = apache struts upload FormFile />

  < form property name= file type = apache struts upload FormFile />

  < form property name= file type = apache struts upload FormFile />

  < form property name= file type = apache struts upload FormFile />

  < form property name= file type = apache struts upload FormFile />

  < form property name= file type = apache struts upload FormFile />

  < form property name= file type = 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= 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= gb errorPage= error jsp %>

  < %@ taglib uri= /WEB INF/struts tld prefix= %>

  < %@ 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 %>

   >

  < >

  < head>

  < title>上传多个文件的jsp文件< /title>

  < meta equiv= pragma content= no cache >

  < meta equiv= cache control content= no cache >

  < meta equiv= expires content= >

  < meta equiv= keywords content= struts 多个文件 上传 >

  < meta equiv= description content= This is a test >

  < /head>

  < body>

  < :form action= uploaded do enctype= multipart/form data method= post >

  < table border= width= % align= center >

  < tr bgColor=# bcff>

  < td align= left >文件类型< /td>

  < td align= left >文件描述< /td>

  < td align= left >文件名< /td>

  < /tr>

  < tr>

  < td align= left >< select name= type >

  < option value= selected>湖南省< /option>

  < option value= >湖北省< /option>

  < option value= >广东省< /option>

  < option value= >北京市< /option>

  < option value= >上海市< /option>

  < /select>< /td>

  < td align= left >< input type= text name= name value= >< /td>

  < td align= left >< input type= file name= file size= value= >

  < /td>

  < /tr>

  < tr>

  < td align= left >< select name= type >

  < option value= selected>湖南省< /option>

  < option value= >湖北省< /option>

  < option value= >广东省< /option>

  < option value= >北京市< /option>

  < option value= >上海市< /option>

  < /select>< /td>

  < td align= left >< input type= text name= name value= >< /td>

  < td align= left >< input type= file name= file size= value= >

  < /td>

  < /tr>

  < tr>

  < td align= left >< select name= type >

  < option value= >湖南省< /option>

  < option value= selected>湖北省< /option>

  < option value= >广东省< /option>

  < option value= >北京市< /option>

  < option value= >上海市< /option>

  < /select>< /td>

  < td align= left >< input type= text name= name value= >< /td>

  < td align= left >< input type= file name= file size= value= >

  < /td>

  < /tr>

  < tr>

  < td align= left >< select name= type >

  < option value= >湖南省< /option>

  < option value= selected>湖北省< /option>

  < option value= >广东省< /option>

  < option value= >北京市< /option>

  < option value= >上海市< /option>

  < /select>< /td>

  < td align= left >< input type= text name= name value= >< /td>

  < td align= left >< input type= file name= file size= value= >

  < /td>

  < /tr>

  < tr>

  < td align= left >< select name= type >

  < option value= >湖南省< /option>

  < option value= >湖北省< /option>

  < option value= selected>广东省< /option>

  < option value= >北京市< /option>

  < option value= >上海市< /option>

  < /select>< /td>

  < td align= left >< input type= text name= name value= >< /td>

  < td align= left >< input type= file name= file size= value= >

  < /td>

  < /tr>

  < tr>

  < td align= left >< select name= type >

  < option value= >湖南省< /option>

  < option value= >湖北省< /option>

  < option value= selected>广东省< /option>

  < option value= >北京市< /option>

  < option value= >上海市< /option>

  < /select>< /td>

  < td align= left >< input type= text name= name value= >< /td>

  < td align= left >< input type= file name= file size= value= >

  < /td>

  < /tr>

  < tr>

  < td align= left >< select name= type >

  < option value= >湖南省< /option>

  < option value= >湖北省< /option>

  < option value= >广东省< /option>

  < option value= selected>北京市< /option>

  < option value= >上海市< /option>

  < /select>< /td>

  < td align= left >< input type= text name= name value= >< /td>

  < td align= left >< input type= file name= file size= value= >

  < /td>

  < /tr>

  < tr>

  < td align= left >< select name= type >

  < option value= >湖南省< /option>

  < option value= >湖北省< /option>

  < option value= >广东省< /option>

  < option value= selected>北京市< /option>

  < option value= >上海市< /option>

  < /select>< /td>

  < td align= left >< input type= text name= name value= >< /td>

  < td align= left >< input type= file name= file size= value= >

  < /td>

  < /tr>

  < tr>

  < td align= left >< select name= type >

  < option value= >湖南省< /option>

  < option value= >湖北省< /option>

  < option value= >广东省< /option>

  < option value= >北京市< /option>

  < option value= selected>上海市< /option>

  < /select>< /td>

  < td align= left >< input type= text name= name value= >< /td>

  < td align= left >< input type= file name= file size= value= >

  < /td>

  < /tr>

  < tr>

  < td align= left >< select name= type >

  < option value= >湖南省< /option>

  < option value= >湖北省< /option>

  < option value= >广东省< /option>

  < option value= >北京市< /option>

  < option value= selected>上海市< /option>

  < /select>< /td>

  < td align= left >< input type= text name= name value= >< /td>

  < td align= left >< input type= file name= file size= 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>

  < /:form>

  < /body>

  < />

  四 还有两个简单jsp文件index jsp error jsp可以自己写

  五 action文件

  package fangchuang action;

  /**

  * @author anEngineer 处理上传文件action

  */

  public class UploadAction extends Action

  public ActionForward execute(

  ActionMapping mapping

  ActionForm form

  HttpServletRequest request

  DynaActionForm fileForm = (DynaActionForm) form;

  String[] types = (String[]) fileForm get( type );

  String[] names = (String[]) fileForm get( name );

  FormFile file = (FormFile) fileForm get( file );

  FormFile file = (FormFile) fileForm get( file );

  FormFile file = (FormFile) fileForm get( file );

  FormFile file = (FormFile) fileForm get( file );

  FormFile file = (FormFile) fileForm get( file );

  FormFile file = (FormFile) fileForm get( file );

  FormFile file = (FormFile) fileForm get( file );

  FormFile file = (FormFile) fileForm get( file );

  FormFile file = (FormFile) fileForm get( file );

  FormFile file = (FormFile) fileForm get( file );

  Map< String FormFile> fileMap = new HashMap< String FormFile>();

  fileMap put( file + * + types[ ] + * + names[ ] file );

  fileMap put( file + * + types[ ] + * + names[ ] file );

  fileMap put( file + * + types[ ] + * + names[ ] file );

  fileMap put( file + * + types[ ] + * + names[ ] file );

  fileMap put( file + * + types[ ] + * + names[ ] file );

  fileMap put( file + * + types[ ] + * + names[ ] file );

  fileMap put( file + * + types[ ] + * + names[ ] file );

  fileMap put( file + * + types[ ] + * + names[ ] file );

  fileMap put( file + * + types[ ] + * + names[ ] file );

  fileMap put( file + * + types[ ] + * + names[ ] file );

  Set fileSet = fileMap entrySet();

  Iterator iter = erator();

  // 取当前系统路径E:\\Tomcat \\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() >= )&& DealPhoto isPhoto(file))

  //图片类别

  String photoType = key substring(key indexOf( * ) + key

   lastIndexOf( * ));

  //图片描述

  String photoName = key substring(key lastIndexOf( * ) + 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 = ;

  byte[] buffer = new byte[ ];

  while ((bytesRead = stream read(buffer )) != )

  bos write(buffer bytesRead);// 将文件写入服务器

  

  bos close();

  stream close();

   catch (Exception e)

  e printStackTrace();

  

  

  

  return mapping findForward( uploaded );

  //还有其他可以改正的地方 如错误信息提示 把照片处理函数放到一个公用类 写文件操作等

  

  

  六 照片处理类文件

  package 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( );

  String ret = fileName + add + extendFile;

  while (isFileExist(ret dir))

  add = random nextInt( );

  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;

  

  

cha138/Article/program/Java/ky/201311/27880

相关参考

知识大全 在Struts 2中实现文件上传

在Struts2中实现文件上传  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts是通过

知识大全 Struts轻松搞定多文件上传

Struts轻松搞定多文件上传  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在前面的《Apac

知识大全 Java上传文件(简单例子)

Java上传文件(简单例子)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  jsp页面  <

知识大全 基于Struts1.2的动态多文件上传

基于Struts1.2的动态多文件上传  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先是we

知识大全 struts2文件上传的采用的三种方式解析

   文件上传几乎是每个项目实现的一个必须的模块  上传就是将信息从个人计算机(本地计算机)传递到中央计算机(远程计算机)系统上让网络上的人都能看到将制作好的网页文字图片等发布到互联网上去以

知识大全 C#用jquery多个文件上传

C#用jquery多个文件上传  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  <%@Pag

知识大全 上传单个文件

Struts1.x系列教程(8):上传单个文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在

知识大全 struts实现多图片上传

  package ninetownszhangcstrutsaction;  public class Constant   private Constant()     public static

知识大全 演示Struts2实现简单上传代码

演示Struts2实现简单上传代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  webxml&

知识大全 使用Struts+Hibernate上传大对象(BLOB)

使用Struts+Hibernate上传大对象(BLOB)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一