读书人

{转}struts里一次下传多个文件的方法

发布时间: 2012-09-14 23:00:49 作者: rapoo

{转}struts里一次上传多个文件的方法。

UploadAction.java

package action;

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

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
??? "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
??? "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>??
??? <!-- 系统常量定义,定义上传文件字符集编码 -->??
??? <constant name="struts.i18n.encoding" value="utf-8"></constant>??
??? <!-- 系统常量定义,定义上传文件临时存放路径 -->??
??? <constant name="struts.multipart.saveDir" value="d:\"></constant>??
??? <!-- Action所在包定义 -->??
??? <package name="action" extends="struts-default">??
??????? <!-- Action名字,类以及导航页面定义 -->??
??????? <!-- 通过Action类处理才导航的的Action定义 -->??
??????? <action name="upload" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="/struts-tags" prefix="s" %>??
<html>??
??? <head>??
??????? <meta http-equiv="Content-Type" content="text/html; charset=utf-8">??
??????? <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>

jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="/struts-tags" prefix="s" %>??
<html>??
??? <head>??
??????? <meta http-equiv="Content-Type" content="text/html; charset=utf-8">??
??????? <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>

读书人网 >软件架构设计

热点推荐