2.搭建struts环境
3.建一个upload.jsp 页面,创建form表单
<form action="doUpload" method="post" enctype="multipart/form-data">
<input type="file" name="upload"/>
<input type="submit" value="上传"/>
</form>
4.配置struts.xml文档
<struts> <constant name="struts.multipart.maxSize" value="5000000"/> <package name="default" extends="struts-default" namespace="/"> <action name="doUpload" class="action.UploadAction" method="doUpload"> <!-- 引用文件上传拦截器 --> <interceptor-ref name="fileUpload"> <param name="maximumSize">1000000</param><!-- 单个文件上传大小 --> <param name="allowedExtensions">jpg,jpeg,gif,peng</param><!--上传文件类型 --> </interceptor-ref> <!-- 引用默认的拦截器栈 --> <interceptor-ref name="defaultStack"/> <result>/jsp/success.jsp</result> </action> </package> </struts>
5.编写 action类
package action; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.apache.commons.io.IOUtils; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class UploadAction extends ActionSupport { private File upload;//文件 private String uploadContentType;//上传文件类型 private String uploadFileName;//文件名称 //上传文件 public String doUpload(){ //声明输入、输出流对象 FileInputStream fis=null; FileOutputStream fos=null; //调用ServletActionContext类的方法得到保存文件的路径及名称 try { String savePath=ServletActionContext.getServletContext().getRealPath("/upload/"+this.uploadFileName); //创建文件输入流对象 fis=new FileInputStream(upload); //创建文件输出流对象 fos=new FileOutputStream(savePath); //复制输入流到输出流 IOUtils.copy(fis, fos); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { fos.flush(); fos.close(); fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return "success"; } //setter/getter方法 public File getUpload() { return upload; } public void setUpload(File upload) { this.upload = upload; } public String getUploadContentType() { return uploadContentType; } public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; } public String getUploadFileName() { return uploadFileName; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; } }