Struts2中实现文件上传的功能

1、首先得配置一下Struts得配置文件struts-xml:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
 4     "http://struts.apache.org/dtds/struts-2.1.7.dtd">
 5
 6 <struts>
 7     <!-- 设置可否动态调用方法 -->
 8     <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
 9
10     <!-- 设置访问路径的后缀名 -->
11     <constant name="struts.action.extension" value="do,action"/>
12
13     <!-- 设置上传文件的最大值  10M左右-->
14     <constant name="struts.multipart.maxSize" value="10701096"/>
15
16     <!--
17         上传单个文件
18      -->
19     <package name="uploadfile" namespace="/uploadfile" extends="struts-default">
20            <action name="uploadfile" class="it.web.action.UploadFileAction" method="execute">
21                <result name="success">/WEB-INF/demo/uploadfile.jsp</result>
22            </action>
23     </package>
24
25     <!--
26         上传多个文件
27     -->
28     <package name="uploadfiles" namespace="/uploadfiles" extends="struts-default">
29            <action name="uploadfiles" class="it.web.action.UploadFileAction" method="execute">
30                <result name="success">/WEB-INF/demo/uploadfiles.jsp</result>
31            </action>
32     </package>
33
34 </struts>

2、对应的action类为:

  1 package it.web.action;
  2
  3 import java.io.File;
  4 import org.apache.commons.io.FileUtils;
  5 import org.apache.struts2.ServletActionContext;
  6
  7 import com.opensymphony.xwork2.ActionContext;
  8
  9 public class UploadFileAction {
 10     //上传单个文件字段
 11     private File image;  //文件(必须要和表单的name属性值一样)
 12     private String imageFileName;  //文件名称(表单的name属性值+FileName)
 13     private String imageContentType;//得到上传文件的类型(表单的name属性值+ContentType)
 14
 15
 16     //上传多个文件的字段
 17     private File[] images;
 18     private String[] imageFileNames;
 19     private String[] imagesContentType;
 20     public File getImage() {
 21         return image;
 22     }
 23     public void setImage(File image) {
 24         this.image = image;
 25     }
 26
 27     public String getImageFileName() {
 28         return imageFileName;
 29     }
 30     public void setImageFileName(String imageFileName) {
 31         this.imageFileName = imageFileName;
 32     }
 33
 34     public String getImageContentType() {
 35         return imageContentType;
 36     }
 37     public void setImageContentType(String imageContentType) {
 38         this.imageContentType = imageContentType;
 39     }
 40
 41 /*************************************************************************/
 42     public File[] getImages() {
 43         return images;
 44     }
 45     public void setImages(File[] images) {
 46         this.images = images;
 47     }
 48
 49     public String[] getImageFileNames() {
 50         return imageFileNames;
 51     }
 52     public void setImageFileNames(String[] imageFileNames) {
 53         this.imageFileNames = imageFileNames;
 54     }
 55
 56     public String[] getImagesContentType() {
 57         return imagesContentType;
 58     }
 59     public void setImagesContentType(String[] imagesContentType) {
 60         this.imagesContentType = imagesContentType;
 61     }
 62
 63
 64
 65     /*
 66      * 上传单个文件
 67      */
 68     public String execute() throws Exception{
 69         //image
 70         /*
 71          *   得到上传文件的真实路径
 72          */
 73         String realpath = ServletActionContext.getServletContext().getRealPath("/image");
 74         System.out.println(realpath);
 75
 76         //判断文件是否存在
 77         if(image!=null){
 78             /*
 79              * 创建文件虚拟的
 80              *
 81              * new File(realpath):文件路径
 82              *
 83              * imageFileName:文件名称
 84              *
 85              */
 86             File savefile = new File(new File(realpath), imageFileName);
 87
 88             if(!savefile.getParentFile().exists())
 89             {
 90                 savefile.getParentFile().mkdir();
 91
 92                 FileUtils.copyFile(image, savefile);
 93                 ActionContext.getContext().put("message", "文件上传成功");
 94             }
 95         }
 96         return "success";
 97     }
 98
 99     /*
100      * 上传多个文件
101      */
102     public String execute1() throws Exception{
103         //image
104         /*
105          *   得到上传文件的真实路径(需要保存的路径)
106          */
107         String realpath = ServletActionContext.getServletContext().getRealPath("/image");
108         System.out.println(realpath);
109
110         //判断文件是否存在
111         if(images!=null){
112             /*
113              * 创建文件虚拟的
114              *
115              * new File(realpath):文件路径
116              *
117              * imageFileName:文件名称
118              *
119              */
120             File savedir = new File(realpath);
121
122             if(!savedir.getParentFile().exists())
123             {
124                 savedir.mkdirs();
125
126                 for(int i=0;i<images.length;i++)
127                 {
128                     File savefile = new File(savedir,imageFileNames[i]);
129                     FileUtils.copyFile(images[i], savefile);
130                 }
131                 ActionContext.getContext().put("message", "多个文件文件上传成功");
132             }
133         }
134         return "success";
135     }
136 }

3、对应的上传单个文件的jsp页面为:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

  <body>
    <form action="${pageContext.request.contextPath}/uploadfile/uploadfile" enctype="multipart/form-data" method="post">
        文件:<input type="file" name="image"/>
        <input type="submit" value="上传"/><br>
        文件类型:${imageContentType}
        文件上传状态:${message}
    </form>
  </body>
</html>

4、对应的上传多个文件的jsp页面为:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
    <form action="${pageContext.request.contextPath}/uploadfiles/uploadfiles" enctype="multipart/form-data" method="post">
        文件:<input type="file" name="images"/><br>
            <input type="file" name="images"/><br>
            <input type="file" name="images"/>
        <input type="submit" value="上传"/><br>
        文件上传状态:${message}
    </form>
  </body>
</html>

注:项目中用到的一些jar包如下:

时间: 2024-10-27 06:45:53

Struts2中实现文件上传的功能的相关文章

struts2中的文件上传和下载

天下大事,必做于细.天下难事,必作于易. 曾经见过某些人,基础的知识还不扎实就去学习更难的事,这样必然在学习新的知识会很迷惑结果 再回来重新学习一下没有搞懂的知识,这必然会导致学习效率的下降!我写的这篇上传和下载都很基础. 十分适合初学者! jsp:页面 <!--在进行文件上传时,表单提交方式一定要是post的方式,因为文件上传时二进制文件可能会很大,还有就是enctype属性,这个属性一定要写成multipart/form-data, 不然就会以二进制文本上传到服务器端--> <for

struts2中实现文件上传功能

在web项目中,文件上传.头像上传这样的功能经常是要用到的,下面就以在struts2中实现文件上传功能为例子,简单地理一下文件上传功能的编码思路. 项目目录结构 项目源代码 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:x

struts2中的文件上传,文件下载

文件上传: Servlet中的文件上传回顾 前台页面 1.提交方式post 2.表单类型 multipart/form-data 3.input type=file 表单输入项 后台 apache提交的FileUpload组件 核心类: FileItemFactory    FileItem的工厂 ServletFileUpLoad    servlet中文件上传的核心类 FileItem  封装了上传表单文件项的信息 在servlet中文件上传处理起来比较麻烦. struts框架对文件上传组件

笨鸟先飞之Java(一)--使用struts2框架实现文件上传和下载

不管是.net还是Java,我们最常接触到的就是文件的上传和下载功能,在Java里要实现这两个常用功能会有很多种解决方式,但是struts2的框架却能给我们一个比较简单的方式,下面就一起来看吧: 文件上传: 首先来看实现上传功能的表单,Index.jsp: <span style="font-family:FangSong_GB2312;font-size:18px;"><%@ page language="java" contentType=&q

笨鸟先飞之Java(一)--使用struts2框架实现文件上传

无论是.net还是Java,我们最常接触到的就是文件的上传和下载功能,在Java里要实现这两个经常使用功能会有非常多种解决方案,可是struts2的框架却能给我们一个比較简单的方式,以下就一起来看吧: 文件上传: 首先来看实现上传功能的表单.Index.jsp: <span style="font-family:FangSong_GB2312;font-size:18px;"><%@ page language="java" contentType

如何在Web页面中集成文件上传功能

当前,个人主页制作非常流行.当用户开发好自己的页面时,需要将文件传输到服务器上,解决这个问题的方法之一 是运行FTP服务器并将每个用户的FTP默认目录设为用户的Web主目录,这样用户就能运行FTP客户程序并上传文件到指定的 Web目录.由于Windows NT 和 Windows98均不提供直接的基于窗口形式的FTP客户程序,用户必须懂得如何使用基于命令行 的FTP客户,或掌握一种新的基于窗口形式的FTP客户程序.因此,这种解决方案仅对熟悉FTP且富有经验的用户来说是可行 的. 如果我们能把文件

【SpringMVC学习08】SpringMVC中实现文件上传

之前有写过一篇struts2实现的文件上传,这一篇博文主要来总结下springmvc实现文件上传的步骤.首先来看一下单个文件的上传,然后再来总结下多个文件上传. 1. 环境准备 springmvc上传文件的功能需要两个jar包的支持(点我下载),如下 2. 单个文件的上传 2.1 前台页面 简单的写一下前台页面,注意一点的是form表单中别忘了写enctype="multipart/form-data"属性: <tr> <td>商品图片</td> &

[转]Struts2多个文件上传

转载至:http://blog.csdn.net/hanxiaoshuang123/article/details/7342091 Struts2多个文件上传多个文件上传分为List集合和数组,下面我们着重介绍一下list集合的上传.都大同小异.一 介绍1. 在struts2文件上传的时候要先导入struts2的几个包,在struts2.3.1.2中,导入的包如图所视: 从图上可以看出其中文件上传所需要的是包为commons-fileupload-1.2.2.jar和commons-io-2.0

转:在Struts 2中实现文件上传

前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题, 所以今天我们就来讨论一下这个问题. 实现原理 Struts 2是通过Commons FileUpload文件上传.Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中.从而我们就能够以本地文件方式的操作浏览器上传的文件. 具体实现 前段时间Apache发布了Struts 2.0.6 GA,所以本文的实现是以该版本的Struts