一。建立ActionForm package com.cnehu.struts.form; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import org.apache.struts.upload.FormFile; import org.apache.struts.upload.MultipartRequestHandler; /** *
*
* @author techyang * @version 1.0 */ public class UpLoadForm extends ActionForm { public static final String ERROR_PROPERTY_MAX_LENGTH_EXCEEDED = "org.apache.struts.webapp.upload.MaxLengthExceeded"; protected FormFile theFile; protected FormFile theFile2; public FormFile getTheFile() { return theFile; } public void setTheFile(FormFile theFile) { this.theFile = theFile; } public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = null; //has the maximum length been exceeded? Boolean maxLengthExceeded = (Boolean) request .getAttribute(MultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDED); if ((maxLengthExceeded != null) && (maxLengthExceeded.booleanValue())) { errors = new ActionErrors(); errors.add(ERROR_PROPERTY_MAX_LENGTH_EXCEEDED, new ActionError( "maxLengthExceeded")); } return errors; } /** * @return Returns the theFile2. */ public FormFile getTheFile2() { return theFile2; } /** * @param theFile2 The theFile2 to set. */ public void setTheFile2(FormFile theFile2) { this.theFile2 = theFile2; } } | |
二。建立ActionServlet
package com.cnehu.struts.action;
import java.io.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import com.cnehu.struts.form.UpLoadForm;
/**
*
public class UpLoadAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String encoding = request.getCharacterEncoding(); if ((encoding != null) && (encoding.equalsIgnoreCase("utf-8"))) { response.setContentType("text/html; charset=gb2312");//如果没有指定编码,编码格式为gb2312 } UpLoadForm theForm = (UpLoadForm) form; FormFile file = theForm.getTheFile();//取得上传的文件 FormFile file2=theForm.getTheFile2(); try { /* * 取当前系统路径D:Tomcat5webappscoka 其中coka 为当前context */ String filePath = this.getServlet().getServletContext() .getRealPath("/"); InputStream stream = file.getInputStream();//把文件读入 ByteArrayOutputStream baos = new ByteArrayOutputStream(); /* * 建立一个上传文件的输出流 如果是linux系统请把UploadFiles后的"/"换成"/" */ OutputStream bos = new FileOutputStream(filePath + "UploadFiles/"+file.getFileName()); //D:Tomcat5webappscokaUploadFilesDSC01508.JPG /* System.out.println(filePath + "UploadFiles/"+file.getFileName()); System.out.println(filePath);*/ request.setAttribute("fileName",filePath + "/" + file.getFileName()); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) { bos.write(buffer, 0, bytesRead);//将文件写入服务器 } bos.close(); stream.close(); | |||||||
InputStream stream2 = file2.getInputStream();//把文件读入
|
四。配置struts-config.xml文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <struts-config> <data-sources /> <form-beans > <form-bean name="uploadsForm" type="com.cnehu.struts.form.UpLoadForm" /> </form-beans> <global-exceptions /> <global-forwards > </global-forwards> <action-mappings > <action name="uploadsForm" type="com.cnehu.struts.action.UpLoadAction" path="/uploadsAction"> <forward name="display" path="/display.jsp" /> </action> </action-mappings> </struts-config> |
* Title:UpLoadAction
*
*
* Copyright: Copyright (c) 2005 techyang ;http://blog.csdn.net/techyang
*
* @author techyang
* @version 1.0
*/