CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

急,commons-fileupload 上传文件的问题!

楼主alexxxl(随风)2005-11-01 22:36:13 在 Java / Web 开发 提问

不知道各位大虾有没用Jakarta的commons项目的commons-fileupload   来上传文件!  
  小弟有问题求救!  
  利用commons-fileupload   可以上传文件,可是enctype="multipart/form-data"  
  因为除了要上传文件还要填写一其他参数,这个时候用request.getParameter("name")方法获取的到的值为空!  
  这个时候不能用request.getParameter("name")来获取其它参数,不知道各位大虾知道用什么方法可以解决这个问题  
  问题点数:80、回复次数:4Top

1 楼purdoch(逍遥多情剑)回复于 2005-11-01 23:33:16 得分 80

使用multipart/form-data上传时,发送的请求和一般的http不一样,需要转化后才能读其他参数。  
   
  如果你用spring,它提供一个MultiRequestResolver,只需要:  
  MultipartHttpServletRequest   multipartRequest   =   (MultipartHttpServletRequest)   request;  
  然后就能正常读取参数:  
  multipartRequest.getParameter("xxx");  
   
  以下是spring的处理方法,必须首先安装commons-fileupload组件:  
   
  public   MultipartHttpServletRequest   resolveMultipart(HttpServletRequest   request)   throws   MultipartException   {  
  DiskFileUpload   fileUpload   =   this.fileUpload;  
  String   enc   =   determineEncoding(request);  
   
  //   use   prototype   FileUpload   instance   if   the   request   specifies  
  //   its   own   encoding   that   does   not   match   the   default   encoding  
  if   (!enc.equals(this.defaultEncoding))   {  
  fileUpload   =   new   DiskFileUpload();  
  fileUpload.setSizeMax(this.fileUpload.getSizeMax());  
  fileUpload.setSizeThreshold(this.fileUpload.getSizeThreshold());  
  fileUpload.setRepositoryPath(this.fileUpload.getRepositoryPath());  
  fileUpload.setHeaderEncoding(enc);  
  }  
   
  try   {  
  List   fileItems   =   fileUpload.parseRequest(request);  
  Map   parameters   =   new   HashMap();  
  Map   multipartFiles   =   new   HashMap();  
  for   (Iterator   it   =   fileItems.iterator();   it.hasNext();)   {  
  FileItem   fileItem   =   (FileItem)   it.next();  
  if   (fileItem.isFormField())   {  
  String   value   =   null;  
  try   {  
  value   =   fileItem.getString(enc);  
  }  
  catch   (UnsupportedEncodingException   ex)   {  
  logger.warn("Could   not   decode   multipart   item   '"   +   fileItem.getFieldName()   +  
          "'   with   encoding   '"   +   enc   +   "':   using   platform   default");  
  value   =   fileItem.getString();  
  }  
  String[]   curParam   =   (String[])   parameters.get(fileItem.getFieldName());  
  if   (curParam   ==   null)   {  
  //   simple   form   field  
  parameters.put(fileItem.getFieldName(),   new   String[]   {   value   });  
  }  
  else   {  
  //   array   of   simple   form   fields  
  String[]   newParam   =   StringUtils.addStringToArray(curParam,   value);  
  parameters.put(fileItem.getFieldName(),   newParam);  
  }  
  }  
  else   {  
  //   multipart   file   field  
  CommonsMultipartFile   file   =   new   CommonsMultipartFile(fileItem);  
  multipartFiles.put(file.getName(),   file);  
  if   (logger.isDebugEnabled())   {  
  logger.debug("Found   multipart   file   ["   +   file.getName()   +   "]   of   size   "   +   file.getSize()   +  
          "   bytes   with   original   filename   ["   +   file.getOriginalFilename()   +   "],   stored   "   +  
          file.getStorageDescription());  
  }  
  }  
  }  
  /*****   注意   parameters   就是普通的text之类的字段的值   *****/  
  return   new   DefaultMultipartHttpServletRequest(request,   multipartFiles,   parameters);  
  }  
  catch   (FileUploadBase.SizeLimitExceededException   ex)   {  
  throw   new   MaxUploadSizeExceededException(this.fileUpload.getSizeMax(),   ex);  
  }  
  catch   (FileUploadException   ex)   {  
  throw   new   MultipartException("Could   not   parse   multipart   request",   ex);  
  }  
  }  
  Top

2 楼alexxxl(随风)回复于 2005-11-02 12:17:11 得分 0

各位大虾,还有没有其他办法,我这里没有用spring!  
  只是一个普通JSP+servlet的程序Top

3 楼liu_you(滴水藏海)回复于 2005-11-02 12:33:54 得分 0

2楼的已经能满足你需求了,仔细看出端倪来!Top

4 楼alexxxl(随风)回复于 2005-11-02 13:29:34 得分 0

请饶恕小弟驽钝,还是没有太明白!请各位大虾再指点指点!Top

相关问题

  • 急急!!CSV文件
  • commons-net-1.3.0 FTPClient 下载文件?
  • 急 急 文件 文件夹 http://www.bx999.com/source/
  • 文件映射,急
  • 急救Copy文件?
  • 急需vb6.exe文件
  • 文件上传,急!!
  • 文件备份!!急
  • 下载文件 急!!!!!!!!!!!
  • 急!文件读写?

关键词

  • 文件
  • commons
  • fileupload
  • multiparthttpservletrequest
  • 大虾
  • 参数
  • enc
  • 上传文件
  • getparameter
  • 问题

得分解答快速导航

  • 帖主:alexxxl
  • purdoch

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo