您的位置:首页 > 编程语言 > Java开发

Struts2实现文件上传(默认拦截器篇)

2013-05-30 20:16 337 查看
struts.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<constant name="struts.custom.i18n.resources" value="message"></constant>
<constant name="struts.multipart.maxSize" value="10000" />

<package name="struts2" extends="struts-default">

<interceptors>
<interceptor name="checkuserinterceptor" class="com.accp.interceptor.CheckUserInterceptor"></interceptor>
<interceptor-stack name="checkuser">
<interceptor-ref name="checkuserinterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>

<global-results>
<result name="login">/login.jsp</result>
</global-results>

<action name="upload" class="com.accp.action.user.UploadAction">
<result name="success">/uploadresult.jsp</result>
<result name="input">/upload.jsp</result>
<interceptor-ref name="fileUpload">
<param name="maximumSize">10000</param>
<!-- 指定ppt类型,类型查询在tomcat/conf里的web.xml里查询 -->
<param name="allowedTypes">application/vnd.ms-powerpoint,image/bmp,image/png,image/gif,image/pjpeg,image/jpg,application/msword,application/vnd.ms-excel,application/actet-stream</param>
<param name="savePath">/upload</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
</struts>


action:IO操作上传

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {
private String username;

private String password;

private List<File> file;

private List<String> fileFileName;

private List<String> fileContentType;

public String getUsername()
{
return username;
}

public void setUsername(String username)
{
this.username = username;
}

public String getPassword()
{
return password;
}

public void setPassword(String password)
{
this.password = password;
}

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

@Override
public String execute() throws Exception
{
for (int i = 0; i < file.size(); ++i)
{
InputStream is = new FileInputStream(file.get(i));

String root = ServletActionContext.getRequest().getRealPath(
"/upload");
File destFile = new File(root, this.getFileFileName().get(i));
OutputStream os = new FileOutputStream(destFile);
byte[] buffer = new byte[400];
int length = 0;
while ((length = is.read(buffer)) > 0)
{
os.write(buffer, 0, length);
}
is.close();
os.close();
}
return SUCCESS;
}
}


jsp:upload.jsp

<s:form action="upload" theme="simple" enctype="multipart/form-data">
<table align="center" width="50%" border="1">
<tr>
<td>用户名</td>
<td><s:textfield name="username"></s:textfield></td>
</tr>
<tr>
<td>密码</td>
<td><s:password name="password"></s:password></td>
</tr>
<tr>
<td>文件</td>
<td id="more"><s:file name="file"></s:file>
<input type="button" value="添加..." onclick="addMore()"></td>
</tr>
<tr>
<td><s:submit value=" submit "></s:submit></td>
<td><s:reset value=" reset "></s:reset></td>
</tr>
</table>
</s:form>


uploadResult

<body>
用户名: <s:property value="username"/><br>

密码: <s:property value="password"/><br>

文件列表: <s:property value="fileFileName"/>
</body>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: