struts2文件上传(单文件/批量添加)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2文件上传(单文件/批量添加)相关的知识,希望对你有一定的参考价值。

文件上传

1.导入上传需要jar

 技术分享

2.建立UploadAction

file是jsp页面的输入项的name相同,后面的两个属性的名称也是有规律的;(inputName+FileName/ContentType)

 1 public class UploadAction extends ActionSupport{
 2 
 3     private static final long serialVersionUID = 1L;
 4     private File file;//上传文件的本身            
 5     private String fileFileName;//上传文件的名字
 6     private String fileContentType;//上传文件的类型
 7     public File getFile() {
 8         return file;
 9     }
10     public void setFile(File file) {
11         this.file = file;
12     }
13     public String getFileFileName() {
14         return fileFileName;
15     }
16     public void setFileFileName(String fileFileName) {
17         this.fileFileName = fileFileName;
18     }
19     public String getFileContentType() {
20         return fileContentType;
21     }
22     public void setFileContentType(String fileContentType) {
23         this.fileContentType = fileContentType;
24     }
25     
26     /**
27      * 上传文件
28      * @return
29      * @throws IOException 
30      */
31     public String upload() throws IOException {
32         //获取文件上传的真实路径
33         String path = ServletActionContext.getRequest().getRealPath("/upload/");
34         //上传 将目标文件拷贝到一个指定的文件目录
35         FileUtils.copyFile(file, new File(path,fileFileName));
36         return SUCCESS;
37     }
38 }

3.配置struts.xml重点说拦截器的配置和相关静态参数的注入

 

 1 constant name="struts.multipart.maxSize" value="1000000000"/>
 2     <package name="bamaw_upload" namespace="/" extends="struts-default">
 3         <global-results>
 4               <result name="success">/success.jsp</result>
 5         </global-results>
 6         <!-- 单个上传文件 -->
 7         <action name="single_*" class="com.tbamaw.web.action.UploadAction" method="{1}">
 8             <!-- 解决上传文件大小的限制 -->
 9             <interceptor-ref name="fileUpload">
10                 <param name="maximumSize">1000000000</param>
11             </interceptor-ref>
12             <interceptor-ref name="defaultStack"/>
13         </action>

<!--
  引入struts2为我们提供好的拦截器,只要引入了一个拦截器,我们就必须要自己重新将系统默认的拦截器再声明一次
  否则,系统的拦截器将失效;
-->

 

1 <!-- 上传单个文件 -->
2     <form action="${pageContext.request.contextPath }/single_upload.action" enctype="multipart/form-data" method="post">
3         文件上传:<input type="file" name="file">
4         <input type="submit" value="上传">
5     </form>

批量文件上传

1.建立action

 1 /**
 2  * 批量添加照片
 3  * @author Administrator
 4  *
 5  */
 6 public class BatchUploadAction extends ActionSupport{
 7 
 8     private static final long serialVersionUID = 1L;
 9     private File[] file;
10     private String[] fileFileName;
11     private String[] fileContentType;
12     public File[] getFile() {
13         return file;
14     }
15     public void setFile(File[] file) {
16         this.file = file;
17     }
18     public String[] getFileFileName() {
19         return fileFileName;
20     }
21     public void setFileFileName(String[] fileFileName) {
22         this.fileFileName = fileFileName;
23     }
24     public String[] getFileContentType() {
25         return fileContentType;
26     }
27     public void setFileContentType(String[] fileContentType) {
28         this.fileContentType = fileContentType;
29     }
30     
31     public String batch() throws IOException {
32         
33         //获取真实路径
34         String path = ServletActionContext.getRequest().getRealPath("/upload/");
35         //遍历上传文件
36         for (int i = 0; i < file.length; i++) {
37             FileUtils.copyFile(file[i], new File(path,fileFileName[i]));
38         }
39         return SUCCESS;
40     }    
41 }

 2.配置struts.xml重点说拦截器的配置和相关静态参数的注入

1     <!-- 批量上传文件 -->
2         <action name="batch_*" class="com.tbamaw.web.action.BatchUploadAction" method="{1}">
3             <!-- 解决上传文件大小的限制 -->
4             <interceptor-ref name="fileUpload">
5                 <param name="maximumSize">1000000000</param>
6             </interceptor-ref>
7             <interceptor-ref name="defaultStack"/>
8         </action>

 3.建立upload.jsp视图

 1     <!-- 批量添加文件 -->
 2     <form action="${pageContext.request.contextPath }/batch_batch.action" enctype="multipart/form-data" method="post">
 3         文件上传:<input type="file" name="file">
 4         <div id="_content"></div>
 5         <input type="submit" value="上传">
 6     </form>
 7         <button id="_btn" >添加文件</button>
 8 </body>
 9 
10 <script type="text/javascript">
11     //页面加载
12     $(function() {
13         $("#_btn").click(function() {
14             var _field = "<p><input type=‘file‘ name=‘file‘><input type=‘button‘ value=‘删除‘ onclick=‘remove(this)‘></p>";
15             $("#_content").append(_field);
16         });
17     });
18     
19     function _remove(obj) {
20         $(this).parent.remove();
21     }
22 </script>

 







以上是关于struts2文件上传(单文件/批量添加)的主要内容,如果未能解决你的问题,请参考以下文章

struts2 文件上传和下载

struts2 文件上传和下载

Struts2学习———— 文件上传和下载

简单介绍使用GooUploader.js实现批量上传文件的方法(使用struts2)

struts2实现文件上传和下载

struts2实验02 单文件上传, 多文件上传, 文件下载