Struts2文件上傳:
一:請選參看Struts2_9中的Struts2上傳原理
二:加入Struts2的支持
三:頁面
<s:form action="upload" method="post" enctype="multipart/form-data">
<s:textfield name="username" label="用戶名"></s:textfield>
<s:password name="password" label="密碼"></s:password>
<s:file name="myfile" label="文件"></s:file>
<s:submit></s:submit>
</s:form>
四:strus.xml配置說明:
<struts>
<!-- 設置request的編碼方式 -->
<constant name="struts.i18n.encoding" value="gbk"></constant>
<!-- 上傳大文件臨時目錄 -->
<constant name="struts.multipart.saveDir" value="c:\"></constant>
<!--
上傳的文件大於多少時將放到臨時目錄中,不然放到內存中
Struts2默認的大爲2097152即2M
<constant name="struts.multipart.maxSize" value=""></constant>
-->
<package name="mengya" extends="struts-default">
<action name="upload" class="com.mengya.action.UploadAction">
<result name="success">/result.jsp</result>
</action>
</package>
</struts>
五:上傳的Action說明:
/**
* Struts2上傳
* @author 張明學
*
*/
public class UploadAction extends ActionSupport {
private String username;
private String password;
/**
* 對應頁面中的File標籤的名稱
*/
private File myfile;
/**
* 這個屬性由Struts2自動生成。規則:File字段的屬性名+FileName和File字段的屬性名+ContentType
* File字段的屬性名+FileName表示上傳的文件名
*/
private String myfileFileName;
/**
* File字段的屬性名+ContentType表示上傳的文件的類型
*/
private String myfileContentType;
@Override
public String execute() throws Exception {
InputStream is=new FileInputStream(myfile);
/**
* 上傳到服務器的目錄
*/
String root=ServletActionContext.getRequest().getRealPath("/upload");
File destFile=new File(root,this.getMyfileFileName());
OutputStream os=new FileOutputStream(destFile);
byte[] buffer=new byte[400];
int length=0;
while((length=is.read(buffer))>0){
os.write(buffer,0,length);
}
os.close();
is.close();
return SUCCESS;
}
public File getMyfile() {
return myfile;
}
public void setMyfile(File myfile) {
this.myfile = myfile;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getMyfileContentType() {
return myfileContentType;
}
public void setMyfileContentType(String myfileContentType) {
this.myfileContentType = myfileContentType;
}
public String getMyfileFileName() {
return myfileFileName;
}
public void setMyfileFileName(String myfileFileName) {
this.myfileFileName = myfileFileName;
}
}服務器
轉自http://aben328.iteye.com/blog/669990jsp