(1)前面的的form JSP 页面
<s:form id="formId" action="/operation/saveCompetitionProductReport.do" enctype="multipart/form-data" theme="simple">
<table>
<tr>
<td colspan="4">关注度截图:
<input type="file" name="pic"/></td>
</tr>
<tr>
<td colspan="4">相关检索字:
<input type="file" name="pic"/></td>
</tr>
</table>
<s:submit/><s:reset/>
</s:form>
(2)struts.xml
<interceptors>
<interceptor-stack name="imgFileUpload">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">image/jpeg,image/pjpeg,image/gif,image/x-png</param>
<param name="maximumSize">204800</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<action name="saveCompetitionProductReport" class="operationAction" method="saveCompetitionProductReport">
<interceptor-ref name="imgFileUpload"/> <!-- ================= 拦截器的使用 ================ -->
<result name="success">
/jsp/operation/edit/MyJsp.jsp
</result>
<result name="error">/jsp/error.jsp</result>
</action>
(3)Action
/*-------------------------------------------------*/
private static final int BUFFER_SIZE = 20 * 1024;//文件大小
private File[] pic; //对应 <input type="file" name="pic"/>
private String[] picFileName; //固定构成格式
private String[] picContentType; //固定构成格式
/*-------------------------------------------------*/
//-------- setter / getter
//.......... code here ............
/**
* 复制文件
* @param src
* @param dest
*/
private static void copy(File src, File dest){
try{
InputStream in = null;
OutputStream out = null;
try{
in = new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE);
out = new BufferedOutputStream(new FileOutputStream(dest),BUFFER_SIZE);
byte[] buffer = new byte[1024];
while(in.read(buffer) > 0){
out.write(buffer);
}
}finally{
if(null != in){
in.close();
}
if(null != out){
out.close();
}
}
}catch(Exception e){
logger.error("复制文件出错",e);
}
}
/**
* 得到文件的后缀名
* @param fileName
* @return
*/
private static String getExtention(String fileName){
int pos = fileName.lastIndexOf(".");
return fileName.substring(pos);
}
public String saveCompetitionProductReport(){
List<String> picUrlList = new ArrayList<String>();//图片在服务器上面的相对位置
if(null != pic){
for(int i = 0, j = pic.length; i<j; i++){
String extention = getExtention(picFileName[i]);
// "/uploadImage" 是 项目下的文件夹,防止上传的文件 图片被成功上传之后,会存放到tomcat的项目/uploadImage 目录下
String fileName = ServletActionContext.getServletContext().getRealPath("/uploadImage")+File.separator+new Date().getTime()+ Math.random() + extention;
//System.out.println("before===================" + fileName +"\t" +picFileName[i]);
File imageFile = new File(fileName);
copy(pic[i], imageFile);
String tmpFileName = fileName.substring(fileName.indexOf(File.separator +"uploadImage"));
picUrlList.add(tmpFileName);
}
Boolean saveMainTableDataFlag = operationBusiness.saveCompetitionProductReport(this);
if(saveMainTableDataFlag){//当主表保存成功的时候,开始保存明细
//--------- code here
}
}
return Action.ACTION_RESULT_SUCCESS;
}