如题:我在网上找了N天了,也找了几种方法,但我都没有试成功,不知道是什么问题.
我就是不知道怎么样在actionForm中定义这样的一个FormFile数组,并且怎么来set和get它.我现在用的一种方法是这样子的:
ActionForm:
       private List spaths=new ArrayList();       public FormFile getSpath(String i) {
return (FormFile)spaths.get(Integer.parseInt(i));
} public void setSpath(String i,FormFile spath) {
this.spaths.add(spath);
} public List getSpaths() {
return spaths;
}JSP:
<input type="file" id="spath<%=i%>" name='spath(<%=(i-1)%>)' class="input_detail" >
其中的那个"i"是会自动增加的,用循环实现的.
这个方法只能上传一个文件,其它的就不行了.
哪位能帮帮我啊.有代码的话可发到
谢谢啦!

解决方案 »

  1.   

    public void setSpath(String i,FormFile spath) { 
    this.spaths.add(spath); 
    } 请问i是干什么的?
    这个方法中好象没有用到这个参数
    多余的...如果问题解决了,把原代码给我发一份,谢谢[email protected]
      

  2.   

    我也不知道,但网上的方法是这样子的,不过去掉了那个String i 的话,好像会出错
    我也不清楚.如果解决了我会发给你的.
      

  3.   

    //附件处理
    String attCount=StringHelper.convertStringNull(request.getParameter("attCount"));
    int idAtt=0;
    if(!attCount.equals(""))
    idAtt=Integer.parseInt(attCount);
    String rootPath = (String) ConfigInfoVO.configInfoProps.get("RootPath");
    String filePath = (String) ConfigInfoVO.configInfoProps.get("InviBidAttUploadFolder");
    //filePath += inviBiddingVO.getInvitebid_proname()+"/";

    Hashtable files = form.getMultipartRequestHandler().getFileElements();
    FormFile ff[] = null;
        ff = new FormFile[files.size()];
        Enumeration fileKey = files.keys();
        int i = 0;
        while (fileKey.hasMoreElements()) {
         String ffname = (String) fileKey.nextElement();
         ff[i] = (FormFile) files.get(ffname);
         i++;
        }

        Set attSet = new HashSet();
        for( i =0;i<ff.length;i++){
      FormFile file = ff[i];
      String planFileName=file.getFileName();
    String planFileExtendName="";
    if(planFileName!=null && !planFileName.equals(""))
    planFileExtendName=planFileName.substring(planFileName.lastIndexOf(".")); 

    InviBidAttVO inviBidAttVO = new InviBidAttVO();
    inviBidAttVO.setInvitebid_attpath(filePath);
    inviBidAttVO.setInvitebid_attname(planFileName);
    inviBidAttVO.setInvitebid_attrename(MyUUIDHexGenerator.getInstance().generate()+planFileExtendName);
    inviBidAttVO.setInviBiddingVO(inviBiddingVO);
    attSet.add(inviBidAttVO);
     
    //上载附件
    try {
    if(!planFileName.equals("") && !filePath.equals("") && !file.getFileName().equals(""))
    FileUpload.upload(file, inviBidAttVO.getInvitebid_attrename(), rootPath+inviBidAttVO.getInvitebid_attpath());

    }catch (IOException ex) {
         throw  new ServiceException("error.upload.files");
    }
        }
        inviBiddingVO.setInviBidAttSet(attSet);
      

  4.   

    一个一个传,就象csdn上传资源一样
      

  5.   

    我很早以前做过,好像挺简单的,在页面做自动添加按钮,在form中
    用list接值,在action用循环存储数据就可以了
      

  6.   

    一。建立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>
    完,希望能帮上你