求 jsp实现多文件上传,例子

解决方案 »

  1.   

    如果你用webwork ,和一个文件上传是类似的。只是用数组接受文件和文件名。
      

  2.   

    jsp页面
    <%@ page pageEncoding="UTF-8" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>using commons fileupload to upload file </title>
    </head><body>
    <div align="center">
      <p>请选择需要上传的文件</p>
      <form action="<%=request.getContextPath()%>/kK.do" method="post" enctype="multipart/form-data" >
        <table width="334" border="1">
          <tr>
            <td width="150">上传人:</td>
            <td width="168"><label>
              <input type="text" name="name" id="name" />action页面
    /*
     * Generated by MyEclipse Struts
     * Template path: templates/java/JavaClass.vtl
     */
    package com.oy.struts.action;import java.io.File;
    import java.util.Iterator;
    import java.util.List;
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;import com.oy.image.model.LoginUser;
    import com.oy.image.service.ImageManager;
    public class KKAction extends Action {
        private static final long serialVersionUID = 2431664260164700200L;
        private ServletContext sc;
        private String savePath;
        private ImageManager imageManager;
           public void setImageManager(ImageManager imageManager) {
            this.imageManager = imageManager;
        }    /**
         * Method execute
         * 
         * @param mapping
         * @param form
         * @param request
         * @param response
         * @return ActionForward
         */
        public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                HttpServletResponse response) {
            
            savePath =request.getSession().getServletContext().getInitParameter("uploads");
                     
            //savePath=config.getServletContext().getInitParameter("savePath");
            System.out.println("+++++++++++++++++++"+savePath);
    //        if(!new File(savePath).isDirectory())
            System.out.println(new File(savePath).getAbsolutePath());
            if(!new File(savePath).exists())
            {            new File(savePath).mkdirs();
            }
            sc = request.getSession().getServletContext();        
            
            DiskFileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            String userName = null;
            String url = null;
            try {
                List items = upload.parseRequest(request);
                Iterator it = items.iterator();
                while (it.hasNext()) {
                    FileItem item = (FileItem) it.next();
                    if (item.isFormField()) {
                        userName = item.getString("UTF-8");
                        System.out.println("表单的参数名称:" + item.getFieldName() + ",对应的参数值:"
                                + item.getString("UTF-8"));
                    } else {
                        if (item.getName() != null && !item.getName().equals("")) {                        System.out.println("上传文件的大小:" + item.getSize());
                            System.out.println("上传文件的类型:" + item.getContentType());
                            System.out.println("上传文件的名称:" + item.getName());                        File tempFile = new File(item.getName());
                            File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());
                            url = file.getAbsolutePath();
                            System.out.println(file.getAbsolutePath());
                            item.write(file);                        if (userName != null & userName != "" & url != null & url != "") {
                                LoginUser user = new LoginUser();
                                user.setUername(userName);
                                user.setUerheadurl(url);
                                System.out.println(userName);
                                System.out.println(url);
                                imageManager.save(user);
                            }                        request.setAttribute("upload.message", "上传文件成功!");                    } else {
                            request.setAttribute("upload.message", "没有选择上传文件!");
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
                request.setAttribute("upload.message", "上传文件不成功!");
            }
            return null;
        }
        
    }
            </label></td>
          </tr>
          <tr>
            <td>上传文件:</td>
            <td><label>
              <input type="file" name="uploadfile" id="uploadfile" />
            </label></td>
            <td><label>
              <input type="file" name="uploadfile2" id="uploadfile2" />
            </label></td>
          </tr>
          <tr>
            <td><label>
              <input type="reset" name="button" id="button" value="重置" />
            </label></td>
            <td><label>
              <input type="submit" name="button2" id="button2" value="提交" />
            </label></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
        </table>
      </form>
      <p>&nbsp;</p>
      <p>&nbsp;  </p>
    </div>
    </body>
    </html>
    我没有做验证,自己看着办
      

  3.   

    用数组来接受穿过来的文件路径 之后用FOR循环进行文件上传哦 嘿嘿!~我是个新手希望能和大虾们学习学习