ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Struts2文件上传

Struts2文件上传

原创 Linux操作系统 作者:664054106 时间:2012-05-27 13:50:02 0 删除 编辑
1 package com.test;
2
3 import
java.io.File;
4 import
java.io.IOException;
5 import
java.text.SimpleDateFormat;
6 import
java.util.Date;
7 import
java.util.Random;
8
9 import
org.apache.commons.io.FileUtils;
10 import
org.apache.struts2.ServletActionContext;
11 import
com.opensymphony.xwork2.ActionSupport;
12
13
14 /**
15
* Action that file upload
16 * @author
Luxh
17  */
18 public class FileUploadAction extends
ActionSupport{
19    
20     private static final long serialVersionUID = 1L
;
21    
22     /**
23
     * 上传的文件
24
     *  该属性名称要和页面中的中的name一致
25      */
26     private
File file;
27     /**文件名*/
28     private
String fileFileName;
29     /**文件类型*/
30     private
String fileContentType;
31    
32    
33     /**
34
     * 上传文件
35      * @return
36      * @throws
IOException
37      */
38     public String uploadFile() throws
IOException {
39         if(file != null
) {
40             //获取存放文件的目录
41             String saveDir = ServletActionContext.getServletContext().getRealPath("D:/test/upload"
);
42             File dirFile = new
File(saveDir);
43             //如果目录不存在,就创建目录
44             if(!
dirFile.exists()) {
45
                dirFile.mkdir();
46
            }
47            
48             //获取目标文件名
49             String targetFileName =
generateFileName(fileFileName);
50             //生成目标文件
51             File targetFile = new
File(saveDir,targetFileName);
52             //复制文件到存放路径,FileUtils是apache旗下commons-io包中的一个工具类
53
       FileUtils.copyFile(file,targetFile);
54            
55             //
实际中可能需要将一些文件信息保存到数据中,比如原始文件名称、文件大小、文件存放路径等信息
56             //可调用相关的业务逻辑进行处理
57
        }
58         return
SUCCESS;
59        
60
    }
61    
62    
63     /**
64
     * 生成新文件名
65      * @param
fileName
66      * @return
67      */
68     private
String generateFileName(String fileName) {
69         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"
);
70         String formatDate = sdf.format(new
Date());
71         int random = new Random().nextInt(1000
);
72         int position = fileName.lastIndexOf("."
);
73         String extension =
fileName.substring(position);
74         return formatDate + random +
extension;    
75
    }
76    
77    
78     public
File getFile() {
79         return
file;
80
    }
81     public void
setFile(File file) {
82         this.file =
file;
83
    }
84     public
String getFileFileName() {
85         return
fileFileName;
86
    }
87     public void
setFileFileName(String fileFileName) {
88         this.fileFileName =
fileFileName;
89
    }
90     public
String getFileContentType() {
91         return
fileContentType;
92
    }
93     public void
setFileContentType(String fileContentType) {
94         this.fileContentType =
fileContentType;
95
    }
96
97
98 }
复制代码

 

  

  配置文件如下:

  

复制代码
 1     <!-- 设置文件上传大小限制 -->
 2     <constant name="struts.multipart.maxSize" value="10000000"/>
 3     <!--文件临时存放目录 -->
 4     <constant name="struts.multipart.saveDir" value="D:/temp"/>
 5 
 6     <package name="default" namespace="/" extends="struts-default">
 7               <!--  默认的全局拦截器 -->
 8               <default-interceptor-ref name="defaultStack"/>
 9 
10      
11               <!-- 文件上传 -->
12              <action name="uploadFile" class="com.test.FileUploadAction" method="uploadFile">
13                 <!-- 如果配置了全局拦截器栈 defaultStack,是不需要再配置拦截器fileUpload
14                     因为defaultStack中已包含fileUpload拦截器
15                 -->
16                 <!---->
17                 <result>/WEB-INF/page/common/success.jspresult>
18              action>
19 
20      package>
复制代码

  

  不建议在struts.properties文件直接修改struts的配置。

  建议在struts.xml中以类似 <constant name="struts.multipart.maxSize" value="10000000"/>的形式进行配置修改。

  

  上传页面要注意 method="post" enctype="multipart/form-data"

  

复制代码
 1 <form. action="uploadFile.action" method="post" enctype="multipart/form-data">                    
 2     <table cellspacing="0" cellpadding="0">
 3         <tr>
 4             <td>
 5                 <input  type="file" name="file" size="50" contentEditable="false" onChange="checkFile(this.value)">
 6             td>
 7         tr>
 8         <tr>
 9             <td>
10                 <input type="submit" value="上传">
11             td>
12         tr>
13     table>
14 form>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26481450/viewspace-731192/,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle主键自增
下一篇: Struts2文件下载
请登录后发表评论 登录
全部评论

注册时间:2011-11-25

  • 博文量
    27
  • 访问量
    72460