用struts上传多个文件的方法

    技术2022-05-11  47

    最近在做Struts项目时遇到了上传多个文件的问题。在网上查了不少资料,也没有找到用Struts上传多个文件的例子。我经过几天的研究,实现了用Struts上传多个文件的功能。现在贴出来让大家共享!    一。建立ActionFormpackage 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;/** * <p> * Title:UpLoadForm * </p> * <p> * Copyright: Copyright (c) 2005 techyang http://blog.csdn.net/techyang * </p> * @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;    }}

    二。建立ActionServletpackage 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;/** * <p> * Title:UpLoadAction * </p> * <p> * Copyright: Copyright (c) 2005 techyang http://blog.csdn.net/techyang * </p> * @author techyang * @version 1.0 */

    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:/Tomcat5/webapps/coka/ 其中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:/Tomcat5/webapps/coka/UploadFiles/DSC01508.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();//把文件读入                ByteArrayOutputStream baos2 = new ByteArrayOutputStream();                OutputStream bos2 =  new FileOutputStream(filePath +                        "UploadFiles//"+file2.getFileName());//建立一个上传文件的输出流                int bytesRead2 = 0;                byte[] buffer2 = new byte[8192];                int i=0;                while ((bytesRead2 = stream2.read(buffer2, 0, 8192)) != -1)                {                    bos2.write(buffer2, 0, bytesRead2);//将文件写入服务器                }                           bos2.close();                stream2.close();                            } catch (Exception e)            {                System.err.print(e);            }            return mapping.findForward("display");              }}

    三。建立上传用的JSP文件 upload.jsp<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %><html:html><head><title>用Struts上传文件</title></head><body><html:form action="/uploadsAction" enctype="multipart/form-data"><html:file property="theFile"/><html:file property="theFile2"/><html:submit/></html:form></body></html:html>

    四。配置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>全文完!


    最新回复(0)