`

Sturt2-文件上传

阅读更多
1、新建文件夹upload
内含upload.jsp,result.jsp

1)upload.jsp需要指定method="post"和enctype="multipart/form-data"

Java代码 复制代码 收藏代码
  1. <body>   
  2.  <form action="result.jsp" method="post" enctype="multipart/form-data">    
  3.  Information: <input type="text" name="info"><br>   
  4.  File: <input type="file" name="file"><br>    
  5.  <input type="submit" name="submit" value=" submit ">    
  6.  </form>   
  7. </body>  
<body>
 <form action="result.jsp" method="post" enctype="multipart/form-data"> 
 Information: <input type="text" name="info"><br>
 File: <input type="file" name="file"><br> 
 <input type="submit" name="submit" value=" submit "> 
 </form>
</body>

 

2)result.jsp(真正开发的时候不会这么去写的,这里为了了解这个过程)

Java代码 复制代码 收藏代码
  1. <body>   
  2. <%   
  3.  InputStream is = request.getInputStream();   
  4.  BufferedReader br = new BufferedReader(new InputStreamReader(is));   
  5.  String buffer = null;    
  6.  while((buffer = br.readLine()) != null)   
  7.  {   
  8.   out.print(buffer + "<br>");     
  9.  }   
  10. %>   
  11. </body>  
<body>
<%
 InputStream is = request.getInputStream();
 BufferedReader br = new BufferedReader(new InputStreamReader(is));
 String buffer = null; 
 while((buffer = br.readLine()) != null)
 {
  out.print(buffer + "<br>");  
 }
%>
</body>

 

当然以前jsp可以用的是smartupload组件

 

二、纯apache的Commons项目内的FileUpload上传文件

 

 

基本它已经做好了90%,我们修改一下就可以!
struts2它可以选择三种方式
1、默认的就是apache的Commons项目内的FileUpload,从官方网站上下载commons-fileupload-bin.zip
commons-io-bin.zip,解压缩。里面包含了jar,文档api,源代码等
本部分来阐述FileUpdate的使用
2、源代码
1)upload2.jsp

 

Java代码 复制代码 收藏代码
  1. <body>   
  2. <form action="/struts2/UploadServlet" method="post" enctype="multipart/form-data">   
  3. username: <input type="text" name="username"><br>   
  4. password: <input type="password" name="password"><br>   
  5. file1: <input type="file" name="file1"><br>   
  6. file2: <input type="file" name="file2"><br>   
  7. <input type="submit" value="submit">   
  8. </form>   
  9. </body>  
<body>
<form action="/struts2/UploadServlet" method="post" enctype="multipart/form-data">
username: <input type="text" name="username"><br>
password: <input type="password" name="password"><br>
file1: <input type="file" name="file1"><br>
file2: <input type="file" name="file2"><br>
<input type="submit" value="submit">
</form>
</body>

 

2)UploadServlet.java

Java代码 复制代码 收藏代码
  1. import java.io.File;   
  2. import java.io.IOException;   
  3. import java.io.OutputStream;   
  4. import java.util.List;   
  5.   
  6.   
  7. import javax.servlet.ServletException;   
  8. import javax.servlet.http.HttpServlet;   
  9. import javax.servlet.http.HttpServletRequest;   
  10. import javax.servlet.http.HttpServletResponse;   
  11.   
  12. import org.apache.commons.fileupload.FileItem;   
  13. import org.apache.commons.fileupload.disk.DiskFileItemFactory;   
  14. import org.apache.commons.fileupload.servlet.ServletFileUpload;   
  15. import org.omg.CORBA.portable.InputStream;   
  16.   
  17. public class UploadServlet extends HttpServlet   
  18. {   
  19.   
  20.  @SuppressWarnings("unchecked")   
  21.  public void doPost(HttpServletRequest request, HttpServletResponse response)   
  22.    throws ServletException, IOException   
  23.  {  //先 生成一个工厂   
  24.   DiskFileItemFactory factory = new DiskFileItemFactory();   
  25.   
  26.   String path = request.getRealPath("/upload");   
  27.        //若你上传的文件比较小几十k,那么会将文件直接放在内存中   
  28.   //当上传文件比较大时,那么会先放到一个临时目录中,setRepository就是来设置这个目录 的。   
  29.   factory.setRepository(new File(path));   
  30.   //当上传文件超出下面的大小时,那么会先放到一个临时目录中,setSizeThreshold就是来设置这个目录 的。   
  31.   factory.setSizeThreshold(1024 * 1024);   
  32. //生成ServletFileUpload实例   
  33.   ServletFileUpload upload = new ServletFileUpload(factory);   
  34.   
  35.   try  
  36.   {//list封装了客户端传过来所有属性   
  37.    List<FileItem> list = upload.parseRequest(request);   
  38.   
  39.    for (FileItem item : list)   
  40.    {//item.isFormField()来判断是否简单  的类型,true表示简单的属性。   
  41.     if (item.isFormField())   
  42.     {   
  43.      String name = item.getFieldName();//获得字段名字   
  44.   
  45.      String value = item.getString("gbk");//获得字段值   
  46.   
  47.      System.out.println(name);   
  48.   
  49.      request.setAttribute(name, value);   
  50.     }   
  51.     else  
  52.     {   
  53.      String name = item.getFieldName();   
  54.   
  55.      String value = item.getName();   
  56.                            //获得文件名,先去掉路径。(因为有的浏览器返回的全部路径+文件名;有的是光返回文件名)   
  57.      int start = value.lastIndexOf("\\");   
  58.   
  59.      String fileName = value.substring(start + 1);   
  60.   
  61.      request.setAttribute(name, fileName);   
  62.   
  63.         
  64.   
  65.      //这一句话相当于以下注释的所有内容,是提供 的一个便捷的操作   
  66.      item.write(new File(path,fileName));   
  67.         
  68.   
  69. //     OutputStream os = new FileOutputStream(new File(path,   
  70. //       fileName));   
  71. //   
  72. //     InputStream is = item.getInputStream();   
  73. //   
  74. //     byte[] buffer = new byte[400];   
  75. //   
  76. //     int length = 0;   
  77. //   
  78. //     while ((length = is.read(buffer)) > 0)   
  79. //     {   
  80. //      os.write(buffer, 0, length);   
  81. //     }   
  82. //   
  83. //     os.close();   
  84. //   
  85. //     is.close();   
  86.     }   
  87.    }   
  88.   
  89.   }   
  90.   
  91.    
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.omg.CORBA.portable.InputStream;

public class UploadServlet extends HttpServlet
{

 @SuppressWarnings("unchecked")
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException
 {  //先 生成一个工厂
  DiskFileItemFactory factory = new DiskFileItemFactory();

  String path = request.getRealPath("/upload");
       //若你上传的文件比较小几十k,那么会将文件直接放在内存中
  //当上传文件比较大时,那么会先放到一个临时目录中,setRepository就是来设置这个目录 的。
  factory.setRepository(new File(path));
  //当上传文件超出下面的大小时,那么会先放到一个临时目录中,setSizeThreshold就是来设置这个目录 的。
  factory.setSizeThreshold(1024 * 1024);
//生成ServletFileUpload实例
  ServletFileUpload upload = new ServletFileUpload(factory);

  try
  {//list封装了客户端传过来所有属性
   List<FileItem> list = upload.parseRequest(request);

   for (FileItem item : list)
   {//item.isFormField()来判断是否简单  的类型,true表示简单的属性。
    if (item.isFormField())
    {
     String name = item.getFieldName();//获得字段名字

     String value = item.getString("gbk");//获得字段值

     System.out.println(name);

     request.setAttribute(name, value);
    }
    else
    {
     String name = item.getFieldName();

     String value = item.getName();
                           //获得文件名,先去掉路径。(因为有的浏览器返回的全部路径+文件名;有的是光返回文件名)
     int start = value.lastIndexOf("\\");

     String fileName = value.substring(start + 1);

     request.setAttribute(name, fileName);

     

     //这一句话相当于以下注释的所有内容,是提供 的一个便捷的操作
     item.write(new File(path,fileName));
     

//     OutputStream os = new FileOutputStream(new File(path,
//       fileName));
//
//     InputStream is = item.getInputStream();
//
//     byte[] buffer = new byte[400];
//
//     int length = 0;
//
//     while ((length = is.read(buffer)) > 0)
//     {
//      os.write(buffer, 0, length);
//     }
//
//     os.close();
//
//     is.close();
    }
   }

  }

 

 

3)web.xml增加以下内容
 

Java代码 复制代码 收藏代码
  1. <servlet>   
  2.   <servlet-name>UploadServlet</servlet-name>   
  3.   <servlet-class>com.test.servlet.UploadServlet</servlet-class>   
  4.  </servlet>   
  5.  <servlet-mapping>   
  6.   <servlet-name>UploadServlet</servlet-name>   
  7.   <url-pattern>/UploadServlet</url-pattern>   
  8.  </servlet-mapping>   
  9. 注释掉<!-- <filter>   
  10.   <filter-name>struts2</filter-name>   
  11.   <filter-class>   
  12.    org.apache.struts2.dispatcher.FilterDispatcher   
  13.   </filter-class>   
  14.  </filter>   
  15.   
  16.   
  17.  <filter-mapping>   
  18.   <filter-name>struts2</filter-name>   
  19.   <url-pattern>/*</url-pattern>   
  20.  </filter-mapping>   
  21.       -->  
<servlet>
  <servlet-name>UploadServlet</servlet-name>
  <servlet-class>com.test.servlet.UploadServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>UploadServlet</servlet-name>
  <url-pattern>/UploadServlet</url-pattern>
 </servlet-mapping>
注释掉<!-- <filter>
  <filter-name>struts2</filter-name>
  <filter-class>
   org.apache.struts2.dispatcher.FilterDispatcher
  </filter-class>
 </filter>


 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
      -->

 
4)result2.jsp

Java代码 复制代码 收藏代码
  1. <SPAN style="BACKGROUND-COLOR: #ffffff"><body>   
  2. username: ${requestScope.username }<br>   
  3. password: ${requestScope.password }<br>   
  4. file1: ${requestScope.file1 }<br>   
  5. file2: ${requestScope.file2 }   
  6. </body></SPAN>  
<body>
username: ${requestScope.username }<br>
password: ${requestScope.password }<br>
file1: ${requestScope.file1 }<br>
file2: ${requestScope.file2 }
</body>

 

 

三、Struts2文件上传(更加简单方便)

 

1、WebRoot目录下upload.jsp文件

Java代码 复制代码 收藏代码
  1. <s:form action="upload" theme="simple" enctype="multipart/form-data">   
  2.   
  3.    <table align="center" width="50%" border="1">   
  4.     <tr>   
  5.      <td>   
  6.       username   
  7.      </td>   
  8.      <td>   
  9.       <s:textfield name="username"></s:textfield>   
  10.      </td>   
  11.     </tr>   
  12.   
  13.     <tr>   
  14.      <td>   
  15.       password   
  16.      </td>   
  17.      <td>   
  18.       <s:password name="password"></s:password>   
  19.      </td>   
  20.     </tr>   
  21.   
  22.   
  23.     <tr>   
  24.      <td>   
  25.       file1   
  26.      </td>   
  27.   
  28.      <td >   
  29.       <s:file name="file"></s:file>   
  30.      </td>   
  31.     </tr>   
  32.     <tr>   
  33.      <td>   
  34.       file2   
  35.      </td>   
  36.   
  37.      <td >   
  38.       <s:file name="file"></s:file>   
  39.      </td>   
  40.     </tr>   
  41.     <tr>   
  42.      <td>   
  43.       file3   
  44.      </td>   
  45.   
  46.      <td >   
  47.       <s:file name="file"></s:file>   
  48.      </td>   
  49.     </tr>   
  50.        
  51.     <tr>   
  52.      <td>   
  53.       <s:submit value=" submit "></s:submit>   
  54.      </td>   
  55.   
  56.      <td>   
  57.       <s:reset value=" reset "></s:reset>   
  58.      </td>   
  59.     </tr>   
  60.    </table>   
  61.   
  62.   </s:form>  
<s:form action="upload" theme="simple" enctype="multipart/form-data">

   <table align="center" width="50%" border="1">
    <tr>
     <td>
      username
     </td>
     <td>
      <s:textfield name="username"></s:textfield>
     </td>
    </tr>

    <tr>
     <td>
      password
     </td>
     <td>
      <s:password name="password"></s:password>
     </td>
    </tr>


    <tr>
     <td>
      file1
     </td>

     <td >
      <s:file name="file"></s:file>
     </td>
    </tr>
    <tr>
     <td>
      file2
     </td>

     <td >
      <s:file name="file"></s:file>
     </td>
    </tr>
    <tr>
     <td>
      file3
     </td>

     <td >
      <s:file name="file"></s:file>
     </td>
    </tr>
    
    <tr>
     <td>
      <s:submit value=" submit "></s:submit>
     </td>

     <td>
      <s:reset value=" reset "></s:reset>
     </td>
    </tr>
   </table>

  </s:form>



 

2、struts.xml文件加入以下内容
     

Java代码 复制代码 收藏代码
  1.  <action name="upload" class="com.test.action.UploadAction">   
  2.   <result name="success">/uploadResult.jsp</result>   
  3. </action>  
  <action name="upload" class="com.test.action.UploadAction">
   <result name="success">/uploadResult.jsp</result>
 </action>

  

 

3、uploadaction.java

Java代码 复制代码 收藏代码
  1. package com.test.action;   
  2.   
  3. import java.io.File;   
  4. import java.io.FileInputStream;   
  5. import java.io.FileOutputStream;   
  6. import java.io.InputStream;   
  7. import java.io.OutputStream;   
  8. import java.util.List;   
  9.   
  10. import org.apache.struts2.ServletActionContext;   
  11.   
  12. import com.opensymphony.xwork2.ActionSupport;   
  13.   
  14. public class UploadAction extends ActionSupport   
  15. {   
  16.  private String username;   
  17.   
  18.  private String password;   
  19.   
  20.  private List<File> file;//file文件体   
  21.   
  22.  private List<String> fileFileName;//fileFileName文件名   
  23.   
  24.  private List<String> fileContentType;//fileContentType文件类型,   
  25.  //这三个名字命名不能改,上传多个文件时系统会一一对应   
  26.   
  27.  public String getUsername()   
  28.  {   
  29.   return username;   
  30.  }   
  31.   
  32.  public void setUsername(String username)   
  33.  {   
  34.   this.username = username;   
  35.  }   
  36.   
  37.  public String getPassword()   
  38.  {   
  39.   return password;   
  40.  }   
  41.   
  42.  public void setPassword(String password)   
  43.  {   
  44.   this.password = password;   
  45.  }   
  46.   
  47.  public List<File> getFile()   
  48.  {   
  49.   return file;   
  50.  }   
  51.   
  52.  public void setFile(List<File> file)   
  53.  {   
  54.   this.file = file;   
  55.  }   
  56.   
  57.  public List<String> getFileFileName()   
  58.  {   
  59.   return fileFileName;   
  60.  }   
  61.   
  62.  public void setFileFileName(List<String> fileFileName)   
  63.  {   
  64.   this.fileFileName = fileFileName;   
  65.  }   
  66.   
  67.  public List<String> getFileContentType()   
  68.  {   
  69.   return fileContentType;   
  70.  }   
  71.   
  72.  public void setFileContentType(List<String> fileContentType)   
  73.  {   
  74.   this.fileContentType = fileContentType;   
  75.  }   
  76.   
  77.  @Override  
  78.  public String execute() throws Exception   
  79.  {   
  80.   for (int i = 0; i < file.size(); ++i)   
  81.   {//这里一定要用字节流,不要用字符流   
  82.    InputStream is = new FileInputStream(file.get(i));   
  83. //获得当前应用的根路径,ServletActionContext对应Servlet的Action的上下文   
  84.    //也可以写绝对路径d:/doucument/   
  85.    String root = ServletActionContext.getRequest().getRealPath(   
  86.      "/upload");   
  87.   
  88.    File destFile = new File(root, this.getFileFileName().get(i));   
  89.           //文件输出流,接受的参数表示目的文件   
  90.    OutputStream os = new FileOutputStream(destFile);   
  91.   
  92.    byte[] buffer = new byte[400];   
  93.   
  94.    int length = 0;   
  95.   
  96.    while ((length = is.read(buffer)) > 0)   
  97.    {   
  98.     os.write(buffer, 0, length);   
  99.    }   
  100.   
  101.    is.close();   
  102.   
  103.    os.close();   
  104.   }   
  105.   
  106.   return SUCCESS;   
  107.   
  108.  }   
  109.   
  110. }  
package com.test.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport
{
 private String username;

 private String password;

 private List<File> file;//file文件体

 private List<String> fileFileName;//fileFileName文件名

 private List<String> fileContentType;//fileContentType文件类型,
 //这三个名字命名不能改,上传多个文件时系统会一一对应

 public String getUsername()
 {
  return username;
 }

 public void setUsername(String username)
 {
  this.username = username;
 }

 public String getPassword()
 {
  return password;
 }

 public void setPassword(String password)
 {
  this.password = password;
 }

 public List<File> getFile()
 {
  return file;
 }

 public void setFile(List<File> file)
 {
  this.file = file;
 }

 public List<String> getFileFileName()
 {
  return fileFileName;
 }

 public void setFileFileName(List<String> fileFileName)
 {
  this.fileFileName = fileFileName;
 }

 public List<String> getFileContentType()
 {
  return fileContentType;
 }

 public void setFileContentType(List<String> fileContentType)
 {
  this.fileContentType = fileContentType;
 }

 @Override
 public String execute() throws Exception
 {
  for (int i = 0; i < file.size(); ++i)
  {//这里一定要用字节流,不要用字符流
   InputStream is = new FileInputStream(file.get(i));
//获得当前应用的根路径,ServletActionContext对应Servlet的Action的上下文
   //也可以写绝对路径d:/doucument/
   String root = ServletActionContext.getRequest().getRealPath(
     "/upload");

   File destFile = new File(root, this.getFileFileName().get(i));
          //文件输出流,接受的参数表示目的文件
   OutputStream os = new FileOutputStream(destFile);

   byte[] buffer = new byte[400];

   int length = 0;

   while ((length = is.read(buffer)) > 0)
   {
    os.write(buffer, 0, length);
   }

   is.close();

   os.close();
  }

  return SUCCESS;

 }

}

 
4、uploadResult.jsp

Java代码 复制代码 收藏代码
  1. <body>   
  2.   
  3. username: <s:property value="username"/><br>   
  4.   
  5. password: <s:property value="password"/><br>   
  6.   
  7. file: <s:property value="fileFileName"/>   
  8.   
  9. </body>  
<body>

username: <s:property value="username"/><br>

password: <s:property value="password"/><br>

file: <s:property value="fileFileName"/>

</body>

 
5、让系统字符集支持中文

在我们的struts.xml文件可以配置

 <constant name="struts.i18n.encoding" value="gbk"></constant>

其实以后很多的strust框架中的default.properties文件中的很多内容都可以在我们的struts.xml通过<constant></constant>来赋值更改。
 
 <constant name="struts.multipart.saveDir" value="c:\"></constant>

default.properties文件中部分字段说明
# struts.multipart.parser=cos
# struts.multipart.parser=pell
struts.multipart.parser=jakarta
以上三行表示struts上传功能对应的三种方式,其中第三种对应对应apache的fileupload


struts.multipart.saveDir=
struts.multipart.maxSize=2097152
表示上传后文件的保存路径和最大允许上传的文件为2M

 

三、Struts2文件上传(由客户端指定文件个数)
1、改写客户端文件WebRoot目录下upload.jsp文件

Java代码 复制代码 收藏代码
  1. <head>   
  2. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">   
  3. <title>Insert title here</title>   
  4.   
  5. <script type="text/javascript">   
  6.   
  7. function addMore()   
  8. {   
  9.  var td = document.getElementById("more");   
  10.     
  11.  var br = document.createElement("br");   
  12.  var input = document.createElement("input");   
  13.  var button = document.createElement("input");   
  14.     
  15.  input.type = "file";   
  16.  input.name = "file";   
  17.     
  18.  button.type = "button";   
  19.  button.value = "Remove";   
  20.     
  21.  button.onclick = function()   
  22.  {   
  23.   td.removeChild(br);   
  24.   td.removeChild(input);   
  25.   td.removeChild(button);   
  26.  }   
  27.     
  28.  td.appendChild(br);   
  29.  td.appendChild(input);   
  30.  td.appendChild(button);   
  31.     
  32. }   
  33.   
  34. </script>   
  35.   
  36. </head>   
  37.   
  38. <body>   
  39.   
  40.  <table align="center" width="50%">   
  41.    <tr>   
  42.     <td>   
  43.   
  44.      <s:fielderror cssStyle="color:red" />   
  45.   
  46.     </td>   
  47.    </tr>   
  48.   </table>   
  49.   
  50.   
  51.   <s:form action="upload" theme="simple" enctype="multipart/form-data">   
  52.   
  53.    <table align="center" width="50%" border="1">   
  54.     <tr>   
  55.      <td>   
  56.       username   
  57.      </td>   
  58.      <td>   
  59.       <s:textfield name="username"></s:textfield>   
  60.      </td>   
  61.     </tr>   
  62.   
  63.     <tr>   
  64.      <td>   
  65.       password   
  66.      </td>   
  67.      <td>   
  68.       <s:password name="password"></s:password>   
  69.      </td>   
  70.     </tr>   
  71.   
  72.   
  73.     <tr>   
  74.      <td>   
  75.       file   
  76.      </td>   
  77.   
  78.      <td id="more">   
  79.       <s:file name="file"></s:file><input type="button" value="Add More.." onclick="addMore()">   
  80.      </td>   
  81.     </tr>   
  82.        
  83.     <tr>   
  84.      <td>   
  85.       <s:submit value=" submit "></s:submit>   
  86.      </td>   
  87.   
  88.      <td>   
  89.       <s:reset value=" reset "></s:reset>   
  90.      </td>   
  91.     </tr>   
  92.    </table>   
  93.   
  94.   </s:form>   
  95.   
  96. </body>  
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>

<script type="text/javascript">

function addMore()
{
 var td = document.getElementById("more");
 
 var br = document.createElement("br");
 var input = document.createElement("input");
 var button = document.createElement("input");
 
 input.type = "file";
 input.name = "file";
 
 button.type = "button";
 button.value = "Remove";
 
 button.onclick = function()
 {
  td.removeChild(br);
  td.removeChild(input);
  td.removeChild(button);
 }
 
 td.appendChild(br);
 td.appendChild(input);
 td.appendChild(button);
 
}

</script>

</head>

<body>

 <table align="center" width="50%">
   <tr>
    <td>

     <s:fielderror cssStyle="color:red" />

    </td>
   </tr>
  </table>


  <s:form action="upload" theme="simple" enctype="multipart/form-data">

   <table align="center" width="50%" border="1">
    <tr>
     <td>
      username
     </td>
     <td>
      <s:textfield name="username"></s:textfield>
     </td>
    </tr>

    <tr>
     <td>
      password
     </td>
     <td>
      <s:password name="password"></s:password>
     </td>
    </tr>


    <tr>
     <td>
      file
     </td>

     <td id="more">
      <s:file name="file"></s:file><input type="button" value="Add More.." onclick="addMore()">
     </td>
    </tr>
    
    <tr>
     <td>
      <s:submit value=" submit "></s:submit>
     </td>

     <td>
      <s:reset value=" reset "></s:reset>
     </td>
    </tr>
   </table>

  </s:form>

</body>

 
2、服务器端不用修改

 

四、Struts2文件上传(限制类型)


(限制类型),Struts2文件上传内部已经实现好了。
只需要在struts.xml文件中增加一个拦截器就好了,同时设置好相应的参数

Java代码 复制代码 收藏代码
  1.      <action name="upload" class="com.test.action.UploadAction">   
  2.  <result name="success">/uploadResult.jsp</result>   
  3.  <result name="input">/upload.jsp</result><!--指strut处理错误时,自动地跳到input页面,此处需要配置-->   
  4.  <interceptor-ref name="fileUpload">   
  5.   <param name="maximumSize">409600</param><!--指每一个文件的大小-->   
  6.   <param name="allowedTypes">application/vnd.ms-powerpoint</param>   
  7.  </interceptor-ref>   
  8.  <interceptor-ref name="defaultStack"></interceptor-ref><!--只要你配置拦截器,默认的必须加上-->   
  9. </action>  
       <action name="upload" class="com.test.action.UploadAction">
   <result name="success">/uploadResult.jsp</result>
   <result name="input">/upload.jsp</result><!--指strut处理错误时,自动地跳到input页面,此处需要配置-->
   <interceptor-ref name="fileUpload">
    <param name="maximumSize">409600</param><!--指每一个文件的大小-->
    <param name="allowedTypes">application/vnd.ms-powerpoint</param>
   </interceptor-ref>
   <interceptor-ref name="defaultStack"></interceptor-ref><!--只要你配置拦截器,默认的必须加上-->
  </action>

       

说明:这里拦截器一般配置在result标签下面,
至于<param name="allowedTypes">application/vnd.ms-powerpoint</param>
里面的类型可以参考tomcat目录下的文件web.xml,该文件中的一个个<mime-type>类型都显示了这些类型的表示。例如
  

Java代码 复制代码 收藏代码
  1. <mime-mapping>   
  2.         <extension>ppt</extension>   
  3.         <mime-type>application/vnd.ms-powerpoint</mime-type>   
  4.     </mime-mapping>  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics