基于struts2的上传是很简单的,首先导入struts2上传所需的jar包
- commons-fileupload-1.2.1.jar
- commons-io-1.3.2.jar
- commons-logging-1.0.4.jar
- freemarker-2.3.15.jar
- ognl-2.7.3.jar
- struts2-core-2.1.8.jar
- xwork-core-2.1.6.jar
strut2上传的主要的代码就以下几个
得到图片将要上传到服务器上的文件夹的路径
String realPath = ServletActionContext.getServletContext().getRealPath("/images");
在上面这个文件夹下面,创建一个文件
File saveFile = new File(new File(realPath),fileTestFileName);
上传负责图片或者文件
FileUtils.copyFile(fileTest, saveFile);
实例
package com.ibm.action; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class Upload extends ActionSupport{ private File fileTest; //接收这个上传的文件 private String fileTestFileName; //Struts2提供的格式, 在文件名后+FileName就是上传文件的名字 public File getFileTest() { return fileTest; } public void setFileTest(File fileTest) { this.fileTest = fileTest; } public String getFileTestFileName() { return fileTestFileName; } public void setFileTestFileName(String fileTestFileName) { this.fileTestFileName = fileTestFileName; } @Override public String execute() throws Exception { String[] str = { ".jpg", ".jpeg", ".bmp", ".gif" }; //限定文件大小是4MB if(fileTest==null || fileTest.length()>4194304 ){ return "imageError"; } for (String s : str) { if (fileTestFileName.endsWith(s)) { String realPath = ServletActionContext.getServletContext().getRealPath("/images"); //实际路径 File saveFile = new File(new File(realPath),fileTestFileName); //在该实际路径下实例化一个文件 //判断父目录是否存在 if(!saveFile.getParentFile().exists()){ saveFile.getParentFile().mkdirs(); } try { //执行文件上传 //FileUtils 类名 org.apache.commons.io.FileUtils; //是commons-io包中的,commons-fileupload 必须依赖 commons-io包实现文件上次, 实际上就是将一个文件转换成流文件进行读写 FileUtils.copyFile(fileTest, saveFile); } catch (IOException e) { return "imageError"; } } } return "imageSuccess"; } }
转载自:http://www.constudy.com/struts2/struts2_file_upload.php