基于struts2的文件上传示例


在webroot文件夹下创建fileupload文件夹


单文件上传

上传页面:

<%@ page language="java" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
<%@ taglib uri="/struts-tags"   prefix="s"%>
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
    </head>
  <body>
    <form action="${pageContext.request.contextPath}/upload/uploadAction_saveFile.action"  
          name="form1"  method="post"  enctype="multipart/form-data" >
             
             上传文件名称:<input type="file" name="uploadImage">
           <input type="submit" value="上传">
    </form>
  </body>
</html>

创建对应的uploadAction类


import java.io.File;
import java.io.IOException;

import javax.servlet.ServletContext;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class UploadAction extends ActionSupport {
	
	/*
	 * 上传文件的存储的临时文件:
	 * apache-tomcat-6.0.35\\work\\Catalina\\localhost\\itcast1105_struts\\upload__5fee1dc7_13ad3d1835b__8000_00000000.tmp
	 */
	private File uploadImage;
	
	//上传文件的类型:text/plain
	private String uploadImageContentType;
	
	//上传文件的真是名称
	private String uploadImageFileName;
	
	public File getUploadImage() {
		return uploadImage;
	}

	public void setUploadImage(File uploadImage) {
		this.uploadImage = uploadImage;
	}

	public String getUploadImageContentType() {
		return uploadImageContentType;
	}

	public void setUploadImageContentType(String uploadImageContentType) {
		this.uploadImageContentType = uploadImageContentType;
	}

	public String getUploadImageFileName() {
		return uploadImageFileName;
	}

	public void setUploadImageFileName(String uploadImageFileName) {
		this.uploadImageFileName = uploadImageFileName;
	}

	public String saveFile(){
		ServletContext sc = ServletActionContext.getServletContext();
		String path = sc.getRealPath("/fileupload");
		//创建文件用于接收上传上来的林十年文件
		File file = new File(path, uploadImageFileName);	
		try {		
			FileUtils.copyFile(uploadImage, file);		
		} catch (IOException e) {
			e.printStackTrace();
		}
		//将临时文件清空
		uploadImage.delete();
		return "success";
	}
	
}


在struts.xml文件中配置文件上传的总大小
    <!-- 配置文件上传的总大小 -->
    <constant name="struts.multipart.maxSize" value="2097152000"></constant>

配置相应的拦截器参数

<action name="uploadAction_saveFile" class="UploadAction" method="saveFile">
			<result name="success">/upload/success.jsp</result>
			<result name="input">/upload/error.jsp</result>
			
			<!-- 配置拦截器的参数,这里是文件上传拦截器 -->
			<interceptor-ref name="defaultStack">
              	<!-- 
              		配置文件上传拦截器的参数
              			* 与定义参数的顺序无关
              			* 允许的类型(allowedTypes)和允许的扩展名(allowedExtensions)必须保持一致
              	 -->
              	<!-- 
              		* 配置上传文件的大小
              			* struts.xml文件中配置的是上传文件的总大小
              			* 这里配置的是上传文件的单个大小
              	 -->
              	<param name="fileUpload.maximumSize">20971520</param>
              	<!-- 配置上传文件允许的类型,如果配置多个值的话,用","隔开 -->
              	<param name="fileUpload.allowedTypes">text/plain,application/msword</param>
              	<!-- 配置上传文件的扩展名,如果配置多个值的话,用","隔开 -->
              	<param name="fileUpload.allowedExtensions">.txt</param>
            </interceptor-ref>
			
</action>


多文件上传:


页面:

<%@ page language="java" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
<%@ taglib uri="/struts-tags"   prefix="s"%>
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
    </head>
  <body>
    <form action="${pageContext.request.contextPath}/upload/uploadsAction_saveFiles.action"  
          name="form1"  method="post"  enctype="multipart/form-data" >
             上传文件名称:<input type="file" name="uploadImages"><br>
             上传文件名称:<input type="file" name="uploadImages"><br>
             上传文件名称:<input type="file" name="uploadImages"><br>
                 
           <input type="submit" value="上传">
    </form>
  </body>
</html>


action中的处理方法

        private File [] uploadImages;
	
	private String [] uploadImagesContentType;
	
	private String [] uploadImagesFileName;
	
	public String saveFiles(){
		System.out.println("UploadsAction ******** saveFiles()");
		
		ServletContext sc = ServletActionContext.getServletContext();
		
		String path = sc.getRealPath("/fileupload");
		
		for(int i=0;i<uploadImages.length;i++){
			File file = new File(path, uploadImagesFileName[i]);
			
			try {
				FileUtils.copyFile(uploadImages[i], file);
			} catch (IOException e) {
				e.printStackTrace();
			}
			
			uploadImages[i].delete();
			
		}
		
		return "success";
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值