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>