(27) java web的struts2框架的使用-基于表单的多文件上传

和单个文件上传配置都是一样的,只是在action中接受参数时候,接受的是数组,不再是单个的文件。

一,action的实现:

public class MutableFilesUpload extends ActionSupport {

	private static final long serialVersionUID = 1L;
	
	public File[] uploadObjects;
	public String[] uploadObjectsFileName;
	public String[] uploadObjectsContentType;
	
	public String moreInfo;

	public String upload() {
		
		System.out.println(moreInfo);

		// 1.拿到ServletContext
		ServletContext servletContext = ServletActionContext
				.getServletContext();
		// 2.调用realPath方法,获取根据一个虚拟目录得到的真实目录
		String realPath = servletContext.getRealPath("/files");
		// 3.如果这个真实的目录不存在,需要创建
		File file = new File(realPath);
		if (!file.exists()) {
			file.mkdirs();
		}
		// 4.把文件存过去
		// 剪切:把临时文件剪切指定的位置,并且给他重命名。 注意:临时文件没有了
		for (int i = 0; i < uploadObjects.length; i++) {
			System.out.println("one file name: " + uploadObjectsFileName[i]);
			uploadObjects[i].renameTo(new File(file, uploadObjectsFileName[i]));
		}

		return SUCCESS;
	}

}

  

二,配置action

<action name="mutable_uploads" class="gy.upload.MutableFilesUpload" method="upload">

  <!-- 指定(限制)上传文件的类型,定义局部拦截器,修改默认拦截器的属性 "fileUpload.maximumSize" :限制上传最大的文件大小。 
				"fileUpload.allowedTypes":允许上传文件的类型。 "fileUpload.allowedExtensions":允许上传文件的可扩展文件类型。 -->
  <interceptor-ref name="defaultStack">
    <param name="fileUpload.maximumSize">500000000</param>
    <param name="fileUpload.allowedTypes">text/plain,application/vnd.ms-powerpoint</param>
    <param name="fileUpload.allowedExtensions">.txt,.ppt</param>
  </interceptor-ref>

  <result>/success.html</result>
  <!-- 出现错误自动会返回input结果,进入结果视图 -->
  <result name="input">/fail.html</result>
</action>

三,表单的实现

<body>
	<form action="mutable_uploads" method="post"
		enctype="multipart/form-data">
		文件:<br> 
		<input type="file" name="uploadObjects"><br>
		<input type="file" name="uploadObjects"><br> 
		more info:
		<input type="text" name="moreInfo"><br>
		<input type="submit" value="提交"><br>
	</form>
</body>

  

  

猜你喜欢

转载自www.cnblogs.com/yangzigege/p/9462390.html
今日推荐