一、准备工作
要想实现文件上传,就必须要在我们的项目中导入两个jar包,分别是:Commons-fileupload-x.x.x.jar和Commons-io-x.x.x.jar.
注:jar包的版本取决于当前项目使用的struts2 的版本。
二、实现文件上传
1、准备上传的页面。
2、开发实现文件上传的Action。
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 org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
public class FileUpload extends ActionSupport {
private File img;
private String imgFileName;
private String imgContextType;
@Override
public String execute() {
System.out.println(imgFileName+" "+imgContextType);
String realPath=ServletActionContext.getServletContext()
.getRealPath("images")+File.separator+imgFileName;
try {
//1
/* InputStream is=new FileInputStream(img);
OutputStream os=new FileOutputStream(realPath);
byte[] by=new byte[is.available()];
is.read(by);
os.write(by);
os.close();
is.close();*/
//2
/* InputStream is=new FileInputStream(img);
OutputStream os=new FileOutputStream(realPath);
byte[] by=new byte[1024];
while(is.read(by)!=-1){
os.write(by, 0, by.length);
}*/
//3
FileUtils.copyFile(img, new File(realPath));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "success";
}
//省略set和get方法
}
3、配置文件上传信息
实现以上信息,就可以实现文件的上传了。