struts2文件上传(单文件/批量添加)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2文件上传(单文件/批量添加)相关的知识,希望对你有一定的参考价值。
单文件上传
1.导入上传需要jar包
2.建立UploadAction
file是jsp页面的输入项的name相同,后面的两个属性的名称也是有规律的;(inputName+FileName/ContentType)
1 public class UploadAction extends ActionSupport{ 2 3 private static final long serialVersionUID = 1L; 4 private File file;//上传文件的本身 5 private String fileFileName;//上传文件的名字 6 private String fileContentType;//上传文件的类型 7 public File getFile() { 8 return file; 9 } 10 public void setFile(File file) { 11 this.file = file; 12 } 13 public String getFileFileName() { 14 return fileFileName; 15 } 16 public void setFileFileName(String fileFileName) { 17 this.fileFileName = fileFileName; 18 } 19 public String getFileContentType() { 20 return fileContentType; 21 } 22 public void setFileContentType(String fileContentType) { 23 this.fileContentType = fileContentType; 24 } 25 26 /** 27 * 上传文件 28 * @return 29 * @throws IOException 30 */ 31 public String upload() throws IOException { 32 //获取文件上传的真实路径 33 String path = ServletActionContext.getRequest().getRealPath("/upload/"); 34 //上传 将目标文件拷贝到一个指定的文件目录 35 FileUtils.copyFile(file, new File(path,fileFileName)); 36 return SUCCESS; 37 } 38 }
3.配置struts.xml:重点说拦截器的配置和相关静态参数的注入
1 constant name="struts.multipart.maxSize" value="1000000000"/> 2 <package name="bamaw_upload" namespace="/" extends="struts-default"> 3 <global-results> 4 <result name="success">/success.jsp</result> 5 </global-results> 6 <!-- 单个上传文件 --> 7 <action name="single_*" class="com.tbamaw.web.action.UploadAction" method="{1}"> 8 <!-- 解决上传文件大小的限制 --> 9 <interceptor-ref name="fileUpload"> 10 <param name="maximumSize">1000000000</param> 11 </interceptor-ref> 12 <interceptor-ref name="defaultStack"/> 13 </action>
<!--
引入struts2为我们提供好的拦截器,只要引入了一个拦截器,我们就必须要自己重新将系统默认的拦截器再声明一次
否则,系统的拦截器将失效;
-->
1 <!-- 上传单个文件 --> 2 <form action="${pageContext.request.contextPath }/single_upload.action" enctype="multipart/form-data" method="post"> 3 文件上传:<input type="file" name="file"> 4 <input type="submit" value="上传"> 5 </form>
批量文件上传
1.建立action
1 /** 2 * 批量添加照片 3 * @author Administrator 4 * 5 */ 6 public class BatchUploadAction extends ActionSupport{ 7 8 private static final long serialVersionUID = 1L; 9 private File[] file; 10 private String[] fileFileName; 11 private String[] fileContentType; 12 public File[] getFile() { 13 return file; 14 } 15 public void setFile(File[] file) { 16 this.file = file; 17 } 18 public String[] getFileFileName() { 19 return fileFileName; 20 } 21 public void setFileFileName(String[] fileFileName) { 22 this.fileFileName = fileFileName; 23 } 24 public String[] getFileContentType() { 25 return fileContentType; 26 } 27 public void setFileContentType(String[] fileContentType) { 28 this.fileContentType = fileContentType; 29 } 30 31 public String batch() throws IOException { 32 33 //获取真实路径 34 String path = ServletActionContext.getRequest().getRealPath("/upload/"); 35 //遍历上传文件 36 for (int i = 0; i < file.length; i++) { 37 FileUtils.copyFile(file[i], new File(path,fileFileName[i])); 38 } 39 return SUCCESS; 40 } 41 }
2.配置struts.xml:重点说拦截器的配置和相关静态参数的注入
1 <!-- 批量上传文件 --> 2 <action name="batch_*" class="com.tbamaw.web.action.BatchUploadAction" method="{1}"> 3 <!-- 解决上传文件大小的限制 --> 4 <interceptor-ref name="fileUpload"> 5 <param name="maximumSize">1000000000</param> 6 </interceptor-ref> 7 <interceptor-ref name="defaultStack"/> 8 </action>
3.建立upload.jsp视图
1 <!-- 批量添加文件 --> 2 <form action="${pageContext.request.contextPath }/batch_batch.action" enctype="multipart/form-data" method="post"> 3 文件上传:<input type="file" name="file"> 4 <div id="_content"></div> 5 <input type="submit" value="上传"> 6 </form> 7 <button id="_btn" >添加文件</button> 8 </body> 9 10 <script type="text/javascript"> 11 //页面加载 12 $(function() { 13 $("#_btn").click(function() { 14 var _field = "<p><input type=‘file‘ name=‘file‘><input type=‘button‘ value=‘删除‘ onclick=‘remove(this)‘></p>"; 15 $("#_content").append(_field); 16 }); 17 }); 18 19 function _remove(obj) { 20 $(this).parent.remove(); 21 } 22 </script>
以上是关于struts2文件上传(单文件/批量添加)的主要内容,如果未能解决你的问题,请参考以下文章