struts2 multifile upload 多文件上传

Struts2 也可以很方便地实现多文件上传。
在输入表单域增加多个文件域: multifileupload.jsp
Html代码 复制代码
  1. <%@pagelanguage="java"contentType="text/html;charset=UTF-8"%>
  2. <%@tagliburi="/struts-tags"prefix="s"%>
  3. <html>
  4. <head>
  5. <title>多文件上传</title>
  6. </head>
  7. <body>
  8. <fontcolor="red"><s:fielderror/></font>
  9. <formaction="multiFileUpload.action"method="POST"enctype="multipart/form-data">
  10. 文件标题:<inputtype="text"name="title"size="50"value="${param.title}"/><br/>
  11. <!--设置二个文件域,名字相同-->
  12. 选择第一个文件:<inputtype="file"name="upload"size="50"/><br/>
  13. 选择第二个文件:<inputtype="file"name="upload"size="50"/><br/>
  14. <inputtype="submit"value="上传"/>
  15. </form>
  16. </body>
  17. </html>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
    <title>多文件上传</title>
</head>
<body>
    <font color="red"><s:fielderror/></font>
    <form action="multiFileUpload.action" method="POST" enctype="multipart/form-data">
        文件标题:<input type="text" name="title" size="50" value="${param.title }"/><br/>
       <!-- 设置二个文件域,名字相同 -->
        选择第一个文件:<input type="file" name="upload" size="50"/><br/>
        选择第二个文件:<input type="file" name="upload" size="50"/><br/>
       <input type="submit" value=" 上传 "/>       
    </form>
</body>
</html>
Action 类中用数组 来封装该多个文件域: MultiFileUploadAction.java
Java代码 复制代码
  1. packageorg.qiujy.web.struts2;
  2. importjava.io.BufferedInputStream;
  3. importjava.io.BufferedOutputStream;
  4. importjava.io.File;
  5. importjava.io.FileInputStream;
  6. importjava.io.FileOutputStream;
  7. importjava.io.IOException;
  8. importjava.io.InputStream;
  9. importjava.io.OutputStream;
  10. importorg.apache.struts2.ServletActionContext;
  11. importcom.opensymphony.xwork2.ActionSupport;
  12. /**
  13. *处理多文件上传的Action类
  14. *
  15. *@authorqiujy
  16. *@version1.0
  17. */
  18. publicclassMultiFileUploadActionextendsActionSupport{
  19. privatestaticfinalintBUFFER_SIZE=16*1024;
  20. //文件标题
  21. privateStringtitle;
  22. //用File数组来封装多个上传文件域对象
  23. privateFile[]upload;
  24. //用String数组来封装多个上传文件名
  25. privateString[]uploadFileName;
  26. //用String数组来封装多个上传文件类型
  27. privateString[]uploadContentType;
  28. //保存文件的目录路径(通过依赖注入)
  29. privateStringsavePath;
  30. //以下为所有属性的getter和setter。省略。。。
  31. //自己封装的一个把源文件对象复制成目标文件对象
  32. privatestaticvoidcopy(Filesrc,Filedst){
  33. InputStreamin=null;
  34. OutputStreamout=null;
  35. try{
  36. in=newBufferedInputStream(newFileInputStream(src),BUFFER_SIZE);
  37. out=newBufferedOutputStream(newFileOutputStream(dst),
  38. BUFFER_SIZE);
  39. byte[]buffer=newbyte[BUFFER_SIZE];
  40. intlen=0;
  41. while((len=in.read(buffer))>0){
  42. out.write(buffer,0,len);
  43. }
  44. }catch(Exceptione){
  45. e.printStackTrace();
  46. }finally{
  47. if(null!=in){
  48. try{
  49. in.close();
  50. }catch(IOExceptione){
  51. e.printStackTrace();
  52. }
  53. }
  54. if(null!=out){
  55. try{
  56. out.close();
  57. }catch(IOExceptione){
  58. e.printStackTrace();
  59. }
  60. }
  61. }
  62. }
  63. @Override
  64. publicStringexecute()throwsException{
  65. File[]srcFiles=this.getUpload();
  66. //处理每个要上传的文件
  67. for(inti=0;i<srcFiles.length;i++){
  68. //根据服务器的文件保存地址和原文件名创建目录文件全路径
  69. StringdstPath=ServletActionContext.getServletContext()
  70. .getRealPath(this.getSavePath())
  71. +"//"+this.getUploadFileName()[i];
  72. FiledstFile=newFile(dstPath);
  73. this.copy(srcFiles[i],dstFile);
  74. }
  75. returnSUCCESS;
  76. }
  77. }

引用自:http://bluelzx.javaeye.com/blog/195281

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值