加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

关于Struts2中request强转MultiPartRequestWrapper完成文件上传

(2015-03-30 08:46:05)
标签:

it

java

分类: java

request 的获取:

HttpServletRequest request = ServletActionContext.getRequest();

或者:

HttpServletRequest request = this.getRequest();

强制类型转换:

主要的jar  commons-fileupload,commons-io。 commons-fileupload包依赖于commons-io。

如果在jsp中的from表单提交一个get()请求时,

MultiPartRequestWrapper req = (MultiPartRequestWrapper) request;

会抛出异常。

但是from表单提交一个post()请求时,

MultiPartRequestWrapper req = (MultiPartRequestWrapper) request;

将会成功转换。

 

 

action代码:

public void attDataSave() throws IOException {

HttpServletRequest request = ServletActionContext.getRequest();

  // 上传文件
  String realPath = this.getRequest().getRealPath("/attachment") + "/";// 取系统当前路径
  @SuppressWarnings("unused")
  String saveUrl = this.getRequest().getContextPath() + "/attachment/";

  MultiPartRequestWrapper req = (MultiPartRequestWrapper) request;
  File[] files = req.getFiles("file");

  @SuppressWarnings("unused")
  String msgString = "";

  String[] fileTypes = new String[] { "dat" }; // 定义允许上传的文件扩展名
  long maxSize = 102400; // 允许最大上传文件大小

  for (int i = 0; i < files.length; i++) {
   // 得到上传文件的扩展名
   String fileName = req.getFileNames("file")[i];
   String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1)
     .toLowerCase();

   File file = files[i];

   // 检查扩展名
   if (!Arrays. asList(fileTypes).contains(fileExt)) {
    msgString = "上传文件扩展名是不允许的扩展名。";
   }
   // 检查文件大小
   if (file.length() > maxSize) {
    msgString = "上传文件大小超过限制。";
   }
   // 检查目录写入权限
   File uploadDir = new File(realPath);
   if (!uploadDir.canWrite()) {
    msgString = "上传目录没有写入权限。";
   }

   String name = FileXload.uploadFile(fileName, realPath, file);
   
   readFile(realPath,name);
  }
 }

 

jsp:

 

 

from表单中   input标签type=“file”, name=“file”,id = "file" 。file对应到action

File[] files = req.getFiles("file");中的“file”

 

 enctype="multipart/form-data">这句话是不可缺少的!!

 

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有