Struts2单个文件上传示例

andylance 贡献于2013-02-28

作者 HAIFANG  创建于2012-03-26 09:31:00   修改者HAIFANG  修改于2012-03-26 09:32:00字数3339

文档摘要:Struts2并未提供自己的上传文件组件,但是Struts2却可以使用其他的上传文件组件,比如Commons-FileUpload,Cos等。即使不懂这些组件细节,我们依然可以正常使用,因为Struts2已经为这些组件封装好了接口,我们按照其规范实现即可。本文介绍Struts2使用常用的Commons-FileUpload组件实现文件的上传。
关键词:

      Struts2并未提供自己的上传文件组件,但是Struts2却可以使用其他的上传文件组件,比如Commons-FileUpload,Cos等。即使不懂这些组件细节,我们依然可以正常使用,因为Struts2已经为这些组件封装好了接口,我们按照其规范实现即可。     本文介绍Struts2使用常用的Commons-FileUpload组件实现文件的上传。引入commons-fileupload.jar,因为组件依赖commons-io组件,所以同时引入commons-fileupload.jar和commons-io.jar(至于版本不再叙述)     首先编写Action类:        package com.upload; import static org.apache.struts2.ServletActionContext.getActionContext; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Map; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; /* * 单文件上传 */ public class Upload extends ActionSupport { private File file; //文件名 private String fileFileName; //文件类型 private String fileContentType; //文件大小 private String maximumSize; //上传允许的文件类型 private String allowedTypes; public String getMaximumSize() { return maximumSize; } public void setMaximumSize(String maximumSize) { this.maximumSize = maximumSize; } public String getAllowedTypes() { return allowedTypes; } public void setAllowedTypes(String allowedTypes) { this.allowedTypes = allowedTypes; } public File getFile() { return file; } public void setFile(File file) { this.file = file; } public String getFileFileName() { return fileFileName; } public void setFileFileName(String fileFileName) { this.fileFileName = fileFileName; } public String getFileContentType() { return fileContentType; } public void setFileContentType(String fileContentType) { this.fileContentType = fileContentType; } @Override public String execute() throws Exception { // TODO Auto-generated method stub File uploadFile=new File(ServletActionContext.getServletContext().getRealPath("uploadFile")); if(!uploadFile.exists()) { uploadFile.mkdir(); } // 第一种读写方式 FileInputStream input=new FileInputStream(file); FileOutputStream out=new FileOutputStream(uploadFile+"\\"+fileFileName); try { byte[] b =new byte[1024]; int i=0; while((i=input.read(b))>0) { out.write(b, 0, i); } }catch(Exception e) { e.printStackTrace(); }finally { input.close(); out.close(); } //获得上传文件的大小 //若是上传的文件大小大于规定的大小则返回错误页面 if(file.length()>Long.parseLong(maximumSize)) { Map request=(Map)ActionContext.getContext().get("request"); request.put("errorMessage","文件太大,不能上传!"); return "input"; } boolean flag=false; //限制的文件类型 String[] allowedTypesStr=allowedTypes.split(","); for(int i=0;i 1000000 application/msword,text/plain success.jsp error.jsp input.jsp    前台jsp文件:

    注意:表单数据的编码格式enctype="multipart/form-data",文件类型的输入域的name是Action中的File对象的名称。     表单数据的编码格式enctype有三个值:text/plain;指定了表单是以文本的方式进行提交。application/x-www-form-urlencoded这是默认的编码方式,提交时,只提交表单域的value属性值。multipart/form-data是把文件中的内容也提交。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档