struts2 文件上传

Struts2文件上传

http://www.cnblogs.com/luxh/archive/2012/05/18/2507017.html

  struts2的文件上传是用拦截器实现的,我们可以不用去关心底层的实现,使得上传文件变得很简单。

  Action代码:

  

复制代码
 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      *  该属性名称要和页面中的<input type="file" name="file">中的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 }
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值