`

struts2文件上传功能

阅读更多

action代码如下

package com.szhifly.railroadjx.product.action;


import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.struts2.util.ServletContextAware;

import com.szhifly.railroadjx.product.entity.ProductInfo;
import com.szhifly.railroadjx.product.entity.ProductTemplet;
import com.szhifly.railroadjx.common.BaseAction;
import com.szhifly.railroadjx.common.ConditionData;
import com.szhifly.railroadjx.common.DateUtils;
import com.szhifly.railroadjx.common.Db;
import com.szhifly.railroadjx.product.logic.interf.IProductInfoLogic;
import com.szhifly.railroadjx.product.logic.interf.IProductTempletLogic;
import java.io.*;
import java.net.URLDecoder;

import javax.servlet.ServletContext;  
import java.text.DateFormat;   
import java.text.SimpleDateFormat;   
import java.util.Date;   
import java.util.Random;


public class test implements ServletContextAware {

	private static Logger log = Logger.getLogger(ProductInfoAction.class);


	//对应jsp页面中的<s:file name="doc" label="File" >name
	private File doc;
	private String fileName;
	private String contentType;	
	private ServletContext context;



	public void setDoc(File file) {
		this.doc = file;
	}

	public void setDocFileName(String fileName) {
		this.fileName = fileName;
	}

	public void setDocContentType(String contentType) {
		this.contentType = contentType;
	}

	public void setServletContext(ServletContext context) {
		this.context = context;
	}
	public ServletContext getContext() {
		return context;
	}

	public void setContext(ServletContext context) {
		this.context = context;
	}

	//上传文件
	public String uplaodFile()throws Exception { 
		String targetDirectory="";
		String targetFileName="";
		targetDirectory="D:\\file";
		targetFileName = generateFileName(fileName);
		File target =new File(targetDirectory, targetFileName); 
		FileUtils.copyFile(doc, target);

		return "success";
	}

	//获取某月所在的季度的所有月份
	private String getMonthFor3(int year,int month){
		int array[][] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};      
        int season = 1;      
        if(month>=1&&month<=3){      
                season = 1;      
        }      
        if(month>=4&&month<=6){      
                season = 2;      
        }      
        if(month>=7&&month<=9){      
                season = 3;      
        }      
        if(month>=10&&month<=12){      
                season = 4;      
        }  
        String returnString="";
        for(int i=0;i<3;i++){
        	String tempMon=""+array[season-1][i];
        	if(tempMon.length()==1){
        		tempMon="0"+tempMon;
        	}
        	if("".equals(returnString)){
        		returnString+="'"+year+"-"+tempMon+"'";
        	}else{
        		returnString+=",'"+year+"-"+tempMon+"'";
        	}       	
        }     
       
        return returnString;  
	}
	//获取重新的名字
	private String generateFileName(String fileName) {
		int position = fileName.lastIndexOf(".");
		String extension = fileName.substring(position); //获取后缀
		String desfileName=DateUtils.getCurrentDate("yyyyMMddHHmmss")+"_"+(new Date()).getTime();
		return desfileName + extension;
	}	



}

 

jsp代码如下,form 必须加入enctype 这个属性,否则会失败的,doc 对应action的doc

<s:form name="createForm" action="/test.action" method="post"  enctype="multipart/form-data" >
<s:file name="doc" label="File" ></s:file>
</s:form>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics