package com.chris;
import java.io.*;
import java.util.Date;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadAction extends ActionSupport{
private static final long serialVersionUID = 572146812454l;
private static final int BUFFER_SIZE = 16 * 1024 ;
//注意,文件上傳時(shí)<s:file/>同時(shí)與myFile,myFileContentType,myFileFileName綁定
//所以同時(shí)要提供myFileContentType,myFileFileName的set方法
private File myFile; //上傳文件
private String contentType;//上傳文件類(lèi)型
private String fileName; //上傳文件名
private String imageFileName;
private String caption;//文件說(shuō)明,與頁(yè)面屬性綁定
public void setMyFileContentType(String contentType) {
System.out.println("文件類(lèi)型 : " + contentType);
this .contentType = contentType;
}
public void setMyFileFileName(String fileName) {
System.out.println("文件名稱(chēng) : " + fileName);
this .fileName = fileName;
}
public void setMyFile(File myFile) {
this .myFile = myFile;
}
public String getImageFileName() {
return imageFileName;
}
public String getCaption() {
return caption;
}
public void setCaption(String caption) {
this .caption = caption;
}
private static void copy(File src, File dst) {
try {
InputStream in = null ;
OutputStream out = null ;
try {
in = new BufferedInputStream( new FileInputStream(src),BUFFER_SIZE);
out = new BufferedOutputStream( new FileOutputStream(dst),BUFFER_SIZE);
byte [] buffer = new byte [BUFFER_SIZE];
while (in.read(buffer) > 0 ) {
out.write(buffer);
}
} finally {
if ( null != in) {
in.close();
}
if ( null != out) {
out.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static String getExtention(String fileName) {
int pos = fileName.lastIndexOf(".");
return fileName.substring(pos);
}
@Override
public String execute() {
imageFileName = new Date().getTime() +getExtention(fileName);
File imageFile = newFile(ServletActionContext.getServletContext().getRealPath("UploadImages") + "/" + imageFileName);
copy(myFile, imageFile);
return SUCCESS;
}
}
注:此時(shí)僅為方便實(shí)現Action所以繼承ActionSupport,并Overrider execute()方法
在struts2中任何一個(gè)POJO都可以作為Action
聯(lián)系客服