web.xml
<?
xml version="1.0" encoding="UTF-8"
?>
< web-app version ="2.4"
xmlns ="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< filter >
< filter-name > struts2 </ filter-name >
< filter-class > org.apache.struts2.dispatcher.FilterDispatcher </ filter-class >
</ filter >
< filter-mapping >
< filter-name > struts2 </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
</ web-app >
< web-app version ="2.4"
xmlns ="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< filter >
< filter-name > struts2 </ filter-name >
< filter-class > org.apache.struts2.dispatcher.FilterDispatcher </ filter-class >
</ filter >
< filter-mapping >
< filter-name > struts2 </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
</ web-app >
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 >
< package name ="struts2" extends ="struts-default" >
< action name ="upload" class ="com.xie.struts.upload.UploadAction" >
< result name ="success" > /upload/result.jsp </ result >
</ action >
</ package >
</ struts >
<! DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd" >
< struts >
< package name ="struts2" extends ="struts-default" >
< action name ="upload" class ="com.xie.struts.upload.UploadAction" >
< result name ="success" > /upload/result.jsp </ result >
</ action >
</ package >
</ struts >
upload.jsp
<%
...
@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030" %>
<% ... @ taglib prefix="s" uri="/struts-tags" %>
< html >
< head >
< title > upload </ title >
</ head >
< body >
< s:form action ="upload" enctype ="multipart/form-data" >
< s:textfield name ="username" id ="username" label ="username" />
< s:file name ="file" id ="file" label ="file" />
< s:submit />
</ s:form >
</ body >
</ html >
pageEncoding="GB18030" %>
<% ... @ taglib prefix="s" uri="/struts-tags" %>
< html >
< head >
< title > upload </ title >
</ head >
< body >
< s:form action ="upload" enctype ="multipart/form-data" >
< s:textfield name ="username" id ="username" label ="username" />
< s:file name ="file" id ="file" label ="file" />
< s:submit />
</ s:form >
</ body >
</ html >
result.jsp
<%
...
@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030" %>
<% ... @ taglib prefix="s" uri="/struts-tags" %>
< html >
< head >
< title > result </ title >
</ head >
< body >
< s:property value ="username" />
< br >
< s:property value ="fileFileName" />
</ body >
</ html >
pageEncoding="GB18030" %>
<% ... @ taglib prefix="s" uri="/struts-tags" %>
< html >
< head >
< title > result </ title >
</ head >
< body >
< s:property value ="username" />
< br >
< s:property value ="fileFileName" />
</ body >
</ html >
UploadAction.java
package
com.xie.struts.upload;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class UploadAction extends ActionSupport ... {
private String username;
private File file;
private String fileFileName; // 有属性file+Filename固定组成
private String fileContentType; // 有属性file+ContentType固定组成
public String getUsername() ...{
return username;
}
public void setUsername(String username) ...{
this.username = username;
}
public File getFile() ...{
return file;
}
public void setFile(File file) ...{
this.file = file;
}
public String getFileFileName() ...{
return fileFileName;
}
public void setFileFileName(String fileFileName) ...{
this.fileFileName = fileFileName;
}
public String getFileContentType() ...{
return fileContentType;
}
public void setFileContentType(String fileContentType) ...{
this.fileContentType = fileContentType;
}
@Override
public String execute() throws Exception ...{
InputStream is = new FileInputStream(file);
String root = ServletActionContext.getRequest().getRealPath("/temp");
File destFile = new File(root, this.getFileFileName());
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;
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class UploadAction extends ActionSupport ... {
private String username;
private File file;
private String fileFileName; // 有属性file+Filename固定组成
private String fileContentType; // 有属性file+ContentType固定组成
public String getUsername() ...{
return username;
}
public void setUsername(String username) ...{
this.username = username;
}
public File getFile() ...{
return file;
}
public void setFile(File file) ...{
this.file = file;
}
public String getFileFileName() ...{
return fileFileName;
}
public void setFileFileName(String fileFileName) ...{
this.fileFileName = fileFileName;
}
public String getFileContentType() ...{
return fileContentType;
}
public void setFileContentType(String fileContentType) ...{
this.fileContentType = fileContentType;
}
@Override
public String execute() throws Exception ...{
InputStream is = new FileInputStream(file);
String root = ServletActionContext.getRequest().getRealPath("/temp");
File destFile = new File(root, this.getFileFileName());
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;
}
}