分享

struts2.2.1 文件上传

 soft_xiang 2010-12-24
此demo为一个简单的struts2.2.1的文件上传到DEMO。。。
 
IDE:MyEclipse
         Version: 8.6.1
         Build id: 8.6.1-20101117
 
JDK:
         java version "1.6.0_21"
 
Tomcat
         tomcat-6.0.29
 
 
需要的JAR
 
页面核心代码:
 
<body>
  <center>
   导入
  </center>
  <form action="common/file_upload.action" method="post"
   enctype="multipart/form-data">
   文件标题:
   <input type="text" name="upFileCaption" size="50" />
   <br />
   选择文件:
   <input type="file" name="upFile" size="50" />
   <br />
   <input type="submit" value=" 上传 " />
  </form>
 </body>
 
 
 
struts.xml核心配置代码

 <!-- 设置最大上传文件大小 200M-->
 <constant name="struts.multipart.maxSize" value="204800" />
 
 
<package name="common" extends="basePackage" namespace="/common">
  <!--
   配置默认拦截器栈
  -->
  <default-interceptor-ref name="baseStack" />
  <action name="import">
   <result>/WEB-INF/jsp/common/import.jsp</result>
  </action>
  <action name="file_upload"
   class="com.doximi.logistics.actions.common.FileUploadAction">
   <interceptor-ref name="baseStack"/>
   <interceptor-ref name="fileUpload">
    <param name="allowedTypes">
     application/excel,application/vnd.ms-excel
    </param>
    <param name="maximumSize">102400</param>
   </interceptor-ref>
   <result name="error">/page/error.jsp</result>
   <result name="success">/page/success.jsp</result>
  </action>
 </package>
 
 
 
java核心代码:
 
public class FileUploadAction extends ActionSupport {
 /**
  *
  */
 private static final long serialVersionUID = 1L;
 private File upFile;
 private String upFileFileName; // 文件名
 private String upFileContentType; // 文件类型
 private String upFileCaption; // 文件备注
 //getter,setter省略
 public String execute() throws Exception {
  System.out.println("\n文件名:" + upFileFileName);
  System.out.println("文件类型:" + upFileContentType);
  
  //获取当前项目绝对路径+拼接文件路径
  //注意如果目标文件夹(upload)不存在可能会找不到上传的文件
  String filePath = ServletActionContext.getServletContext().getRealPath(
    "/upload")
    + "/" + upFileFileName;
  File tarFile = new File(filePath);
  try {
   copyFile(upFile, tarFile);
  } catch (Exception e) {
   e.printStackTrace();
   return ERROR;
  }
  System.out.println("文件存放位置:"+filePath+"\n");
  return SUCCESS;
 }
 /**
  * 复制文件
  *
  * @param java
  *            .io.File src
  * @param java
  *            .io.File tar
  * @throws IOException
  */
 private void copyFile(File src, File tar) throws IOException {
  InputStream inputStream = new FileInputStream(src);
  OutputStream outputStream = new FileOutputStream(tar);
  System.out.println("文件大小:" + inputStream.available());
  byte[] content = new byte[1024];
  while (inputStream.read(content) > 0) {
   outputStream.write(content);
  }
  outputStream.close();
  inputStream.close();
 }
}
 
访问URL
common/import.action
 
完工
 
注意:
上传页面中的
<input type="file" name="upFile" size="50" />
name要对应java代码中的字段。
 
半年没写代码竟然连这都忘记了,弄一下午猛然发现没对应,难道脑袋被门卡了还没好?
 
郁闷,郁闷。。。
 
 
另附

Struts2 文件上传文件类型allowedTypes汇总(原文地址:http://aben328./blog/670078

'.a'      : 'application/octet-stream',     
'.ai'     : 'application/postscript',     
'.aif'    : 'audio/x-aiff',     
'.aifc'   : 'audio/x-aiff',     
'.aiff'   : 'audio/x-aiff',     
'.au'     : 'audio/basic',     
'.avi'    : 'video/x-msvideo',     
'.bat'    : 'text/plain',     
'.bcpio' : 'application/x-bcpio',     
'.bin'    : 'application/octet-stream',     
'.bmp'    : 'image/x-ms-bmp',     
'.c'      : 'text/plain',     
'.cdf'    : 'application/x-cdf',     
'.cdf'    : 'application/x-netcdf',     
'.cpio'   : 'application/x-cpio',     
'.csh'    : 'application/x-csh',     
'.css'    : 'text/css',     
'.dll'    : 'application/octet-stream',     
'.doc'    : 'application/msword',     
'.dot'    : 'application/msword',     
'.dvi'    : 'application/x-dvi',     
'.eml'    : 'message/rfc822',     
'.eps'    : 'application/postscript',     
'.etx'    : 'text/x-setext',     
'.exe'    : 'application/octet-stream',     
'.gif'    : 'image/gif',     
'.gtar'   : 'application/x-gtar',     
'.h'      : 'text/plain',     
'.hdf'    : 'application/x-hdf',     
'.htm'    : 'text/html',     
'.html'   : 'text/html',     
'.ief'    : 'image/ief',     
'.jpe'    : 'image/jpeg',     
'.jpeg'   : 'image/jpeg',     
'.jpg'    : 'image/jpeg',     
'.js'     : 'application/x-javascript',     
'.ksh'    : 'text/plain',     
'.latex' : 'application/x-latex',     
'.m1v'    : 'video/mpeg',     
'.man'    : 'application/x-troff-man',     
'.me'     : 'application/x-troff-me',     
'.mht'    : 'message/rfc822',     
'.mhtml' : 'message/rfc822',     
'.mif'    : 'application/x-mif',     
'.mov'    : 'video/quicktime',     
'.movie' : 'video/x-sgi-movie',     
'.mp2'    : 'audio/mpeg',     
'.mp3'    : 'audio/mpeg',     
'.mpa'    : 'video/mpeg',     
'.mpe'    : 'video/mpeg',     
'.mpeg'   : 'video/mpeg',     
'.mpg'    : 'video/mpeg',     
'.ms'     : 'application/x-troff-ms',     
'.nc'     : 'application/x-netcdf',     
'.nws'    : 'message/rfc822',     
'.o'      : 'application/octet-stream',     
'.obj'    : 'application/octet-stream',     
'.oda'    : 'application/oda',     
'.p12'    : 'application/x-pkcs12',     
'.p7c'    : 'application/pkcs7-mime',     
'.pbm'    : 'image/x-portable-bitmap',     
'.pdf'    : 'application/pdf',     
'.pfx'    : 'application/x-pkcs12',     
'.pgm'    : 'image/x-portable-graymap',     
'.pl'     : 'text/plain',     
'.png'    : 'image/png',     
'.pnm'    : 'image/x-portable-anymap',     
'.pot'    : 'application/vnd.ms-powerpoint',     
'.ppa'    : 'application/vnd.ms-powerpoint',     
'.ppm'    : 'image/x-portable-pixmap',     
'.pps'    : 'application/vnd.ms-powerpoint',     
'.ppt'    : 'application/vnd.ms-powerpoint',     
'.ps'     : 'application/postscript',     
'.pwz'    : 'application/vnd.ms-powerpoint',     
'.py'     : 'text/x-python',     
'.pyc'    : 'application/x-python-code',     
'.pyo'    : 'application/x-python-code',     
'.qt'     : 'video/quicktime',     
'.ra'     : 'audio/x-pn-realaudio',     
'.ram'    : 'application/x-pn-realaudio',     
'.ras'    : 'image/x-cmu-raster',     
'.rdf'    : 'application/xml',     
'.rgb'    : 'image/x-rgb',     
'.roff'   : 'application/x-troff',     
'.rtx'    : 'text/richtext',     
'.sgm'    : 'text/x-sgml',     
'.sgml'   : 'text/x-sgml',     
'.sh'     : 'application/x-sh',     
'.shar'   : 'application/x-shar',     
'.snd'    : 'audio/basic',     
'.so'     : 'application/octet-stream',     
'.src'    : 'application/x-wais-source',     
'.sv4cpio': 'application/x-sv4cpio',     
'.sv4crc' : 'application/x-sv4crc',     
'.swf'    : 'application/x-shockwave-flash',     
'.t'      : 'application/x-troff',     
'.tar'    : 'application/x-tar',     
'.tcl'    : 'application/x-tcl',     
    
'.tex'    : 'application/x-tex',     
'.texi'   : 'application/x-texinfo',     
'.texinfo': 'application/x-texinfo',     
'.tif'    : 'image/tiff',     
'.tiff'   : 'image/tiff',     
'.tr'     : 'application/x-troff',     
'.tsv'    : 'text/tab-separated-values',     
'.txt'    : 'text/plain',     
'.ustar' : 'application/x-ustar',     
'.vcf'    : 'text/x-vcard',     
'.wav'    : 'audio/x-wav',     
'.wiz'    : 'application/msword',     
'.wsdl'   : 'application/xml',     
'.xbm'    : 'image/x-xbitmap',     
'.xlb'    : 'application/vnd.ms-excel',     
# Duplicates :(     
'.xls'    : 'application/excel',     
'.xls'    : 'application/vnd.ms-excel',     
'.xml'    : 'text/xml',     
'.xpdl'   : 'application/xml',     
'.xpm'    : 'image/x-xpixmap',     
'.xsl'    : 'application/xml',     
'.xwd'    : 'image/x-xwindowdump',     
'.zip'    : 'application/zip',

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多