Struts2文件上传功能开发

技术要点
本节代码详细说明文件上传功能的开发流程,介绍知识点如下:
1. 文件上传页面和显示上传成功页面代码内容。
2. UploadAction类中实现上传功能方法和上传文件属性介绍。
3. struts.xml中UploadAction配置,以及字符编码、文件临时存放路径配置。
4. 上传后所处路径和最终上传成功后效果展示。
<!---------------------文件名:upload.jsp----------------->
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
    
<head>
        
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
        
<title>上传文件</title>
    
</head>
    
<body>
    
<!-- 上传文件表单定义 -->
    
<s:form action="upload" method="post" enctype="multipart/form-data">
        
<tr>
    
<!-- 上传文件标签定义 -->
    
<td>上传文件:<s:file name="file"></s:file></td>
    
</tr>
    
<tr>
    
<td>再次上传文件:<s:file name="file"></s:file></td>
    
</tr>
    
<tr>
    
<td align="left"><s:submit name="submit" value="提交"></s:submit></td>
    
</tr>
    
</s:form>
    
</body>
</html>
 
<!-------------------上传文件成功后结果页面文件名:result.jsp ----------------->
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
    
<head>
        
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
        
<title>上传结果</title>
    
</head>
    
<body>
        上传文件:
        
<!-- 显示上传成功文件名 -->
        
<s:property value="fileFileName" />
    
</body>
</html>
<!------------------文件名:UploadAction.java ------------------>
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

//文件上传Action
public class UploadAction extends ActionSupport {
    
//上传文件存放路径
    private final static String UPLOADDIR = "/upload";
    
//上传文件集合
    private List<File> file;
    
//上传文件名集合
    private List<String> fileFileName;
    
//上传文件内容类型集合
    private List<String> fileContentType;

    
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;
    }


    
public String execute() throws Exception {
        
for (int i = 0; i < file.size(); i++{
            
//循环上传每个文件
            uploadFile(i);
        }

        
return "success";
    }


    
//执行上传功能
    private void uploadFile(int i) throws FileNotFoundException, IOException {
        
try {
            InputStream in 
= new FileInputStream(file.get(i));
            String dir 
= ServletActionContext.getRequest().getRealPath(UPLOADDIR);
            File uploadFile 
= new File(dir, this.getFileFileName().get(i));
            OutputStream out 
= new FileOutputStream(uploadFile);
            
byte[] buffer = new byte[1024 * 1024];
            
int length;
            
while ((length = in.read(buffer)) > 0{
                out.write(buffer, 
0, length);
            }


            in.close();
            out.close();
        }
 catch (FileNotFoundException ex) {
            ex.printStackTrace();
        }
 catch (IOException ex) {
            ex.printStackTrace();
        }

    }

}
struts.xml配置文件中有关文件上传的配置:
<!--------------------文件名:struts.xml------------------->
<struts>
 <!-- 系统常量定义,定义上传文件字符集编码 -->
 <constant name="struts.i18n.encoding" value="gb2312"></constant>
 <!-- 系统常量定义,定义上传文件临时存放路径 -->
 <constant name="struts.multipart.saveDir" value="c:\"></constant>
 <!-- Action所在包定义 -->
 <package name="C04.4" extends="struts-default">
  <!-- Action名字,类以及导航页面定义 -->
  <!-- 通过Action类处理才导航的的Action定义 -->
  <action name="upload" class="action.UploadAction">
   <result name="input">/jsp/upload.jsp</result>
   <result name="success">/jsp/result.jsp</result>
  </action>
 </package>
</struts>

posted on 2012-11-29 23:47 youngturk 阅读(302) 评论(0)  编辑  收藏 所属分类: JSP随笔Java基础struts2servlet


只有注册用户登录后才能发表评论。


网站导航:
 
<2012年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

导航

统计

公告

this year :
1 jQuery
2 freemarker
3 框架结构
4 口语英语

常用链接

留言簿(6)

随笔分类

随笔档案

文章分类

文章档案

相册

EJB学习

Flex学习

learn English

oracle

spring MVC web service

SQL

Struts

生活保健

解析文件

搜索

最新评论

阅读排行榜

评论排行榜