我需要一个jsp的具有文件上传功能
哪位大哥有??
麻烦给我发下谢谢了最好是带有详细的讲解~~~

解决方案 »

  1.   

    下面有个实例,理解下...再根据需要改下!! 本页面提供表单,让用户选择要上传的文件,点击"上传"按钮执行上传操作。 页面源码如下: <!--
        文件名:upload.html
    作  者:纵横软件制作中心雨亦奇([email protected])
    -->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>文件上传</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head><body>
    <p>&nbsp;</p>
    <p align="center">上传文件选择</p>
    <FORM METHOD="POST" ACTION="jsp/do_upload.jsp"
    ENCTYPE="multipart/form-data">
    <input type="hidden" name="TEST" value="good">
      <table width="75%" border="1" align="center">
        <tr> 
          <td><div align="center">1、 
              <input type="FILE" name="FILE1" size="30">
            </div></td>
        </tr>
        <tr> 
          <td><div align="center">2、 
              <input type="FILE" name="FILE2" size="30">
            </div></td>
        </tr>
        <tr> 
          <td><div align="center">3、 
              <input type="FILE" name="FILE3" size="30">
            </div></td>
        </tr>
        <tr> 
          <td><div align="center">4、 
              <input type="FILE" name="FILE4" size="30">
            </div></td>
        </tr>
        <tr> 
          <td><div align="center">
              <input type="submit" name="Submit" value="上传它!">
            </div></td>
        </tr>
      </table>
    </FORM>
    </body>
    </html>
     
    2、上传处理页面do_upload.jsp 本页面执行文件上传操作。页面源码中详细介绍了上传方法的用法,在此不赘述了。 页面源码如下: <%--
    文件名:do_upload.jsp
    作  者:纵横软件制作中心雨亦奇([email protected])
    --%>
    <%@ page contentType="text/html; charset=gb2312" language="java" 
    import="java.util.*,com.jspsmart.upload.*" errorPage="" %>
    <html>
    <head>
    <title>文件上传处理页面</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head><body>
    <%
    // 新建一个SmartUpload对象
    SmartUpload su = new SmartUpload();
    // 上传初始化
    su.initialize(pageContext);
    // 设定上传限制
    // 1.限制每个上传文件的最大长度。
    // su.setMaxFileSize(10000);
    // 2.限制总上传数据的长度。
    // su.setTotalMaxFileSize(20000);
    // 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
    // su.setAllowedFilesList("doc,txt");
    // 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,
    jsp,htm,html扩展名的文件和没有扩展名的文件。
    // su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
    // 上传文件
    su.upload();
    // 将上传文件全部保存到指定目录
    int count = su.save("/upload");
    out.println(count+"个文件上传成功!<br>");

    // 利用Request对象获取参数之值
    out.println("TEST="+su.getRequest().getParameter("TEST")
    +"<BR><BR>"); // 逐一提取上传文件信息,同时可保存文件。
    for (int i=0;i<su.getFiles().getCount();i++)
    {
    com.jspsmart.upload.File file = su.getFiles().getFile(i);

    // 若文件不存在则继续
    if (file.isMissing()) continue; // 显示当前文件信息
    out.println("<TABLE BORDER=1>");
    out.println("<TR><TD>表单项名(FieldName)</TD><TD>"
    + file.getFieldName() + "</TD></TR>");
    out.println("<TR><TD>文件长度(Size)</TD><TD>" + 
    file.getSize() + "</TD></TR>");
    out.println("<TR><TD>文件名(FileName)</TD><TD>" 
    + file.getFileName() + "</TD></TR>");
    out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>" 
    + file.getFileExt() + "</TD></TR>");
    out.println("<TR><TD>文件全名(FilePathName)</TD><TD>"
    + file.getFilePathName() + "</TD></TR>");
    out.println("</TABLE><BR>"); // 将文件另存
    // file.saveAs("/upload/" + myFile.getFileName());
    // 另存到以WEB应用程序的根目录为文件根目录的目录下
    // file.saveAs("/upload/" + myFile.getFileName(), 
    su.SAVE_VIRTUAL);
    // 另存到操作系统的根目录为文件根目录的目录下
    // file.saveAs("c:\\temp\\" + myFile.getFileName(), 
    su.SAVE_PHYSICAL); }
    %>
    </body>
    </html>
      

  2.   

    请参考我们教程中使用commons-fileupload进行文件上传的例子:http://www.family168.com/tutorial/jsp/html/jsp-ch-11.html
      

  3.   

    jspsmartupload也可以 cos也行
      

  4.   

    麻烦你有详细的使用方法吗??有的话给我发下 谢谢了  [email protected]
      

  5.   

    你在网上查查SmartUpload这个组件的用法就清楚了啊!
      

  6.   

    csdn的下载里有例子,是用fileupload,写的,搜一下吧
    据说SmartUpload上传大文件出错,现在一般使用fileupload
      

  7.   

    现在都很少用JSPSmartLoad来上传文件了!!因为对文件大小有限制。现在大多数都是使用开源的CommonsUploadFile来上传文件了!!
      

  8.   

    package untitled;import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    import org.apache.commons.fileupload.*;public class Servlet1 extends HttpServlet {
        private static final String CONTENT_TYPE = "text/html; charset=GBK";
        //private String uploadPath = "C:\\upload\\"; // 用于存放上传文件的目录private String uploadPath ="f:\\image";
    private String tempPath = "f:\\image"; // 用于存放临时文件的目录
        //Initialize global variables
        public void init() throws ServletException {
        }    //Process the HTTP Get request
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            response.setContentType(CONTENT_TYPE);
            PrintWriter out = response.getWriter();
            try {if(!new File(uploadPath).isDirectory()){
    new File(uploadPath).mkdirs();
    }     DiskFileUpload fu = new DiskFileUpload();
         // 设置最大文件尺寸,这里是4MB
         fu.setSizeMax(4194304);
         // 设置缓冲区大小,这里是4kb
         fu.setSizeThreshold(4096);
         // 设置临时目录:
         fu.setRepositoryPath(tempPath);     // 得到所有的文件:
         List fileItems = fu.parseRequest(request);
         Iterator i = fileItems.iterator();
         // 依次处理每一个文件:
         while (i.hasNext()) {
             FileItem fi = (FileItem) i.next();
             // 获得文件名,这个文件名包括路径:
             String fileName = fi.getName();
             if (fileName != null) {
                 // 在这里可以记录用户和文件信息
                 // ...
                 // 写入文件a.txt,你也可以从fileName中提取文件名:
                 System.out.println(fileName);
                 System.out.println(fileName.lastIndexOf("\\"));
                 System.out.println(fileName.substring(fileName.lastIndexOf("\\") + 1));
                 System.out.println(uploadPath);
      fi.write(new File(uploadPath
                         + "\\" + fileName.substring(fileName.lastIndexOf("\\") + 1)));
       System.out.print("成功");         }
         }
         // 跳转到上传成功提示页面
     } catch (Exception e) {
         // 可以跳转出错页面
     }        out.close();
        }    //Process the HTTP Post request
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            doGet(request, response);
        }    //Clean up resources
        public void destroy() {
        }
    }
      

  9.   

    <input type="hidden" ><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html>
      <head>
       <title>上传页</title>
      </head>
      <body>
    <form action="upload.do" method="post" enctype="multipart/form-data">
    <table>
    <tr>
    <td>文件:</td>
    <td><input type="file" name="myfile"></td>
    </tr>
    <tr>
    <td align="center"><input type="submit" value="提交"></td>
    </tr>
    </table>
    </form>   
      </body>
    </html>
      

  10.   

    package com.upload.Servlet;import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Iterator;
    import java.util.List;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;public class uploadServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException {
    final long MAX_SIZE = 300 * 1024 ;//限制上传文件大小
    //设置上传文件类型
    final String[] allowedExt = new String[]{"jpg","jpeg","gif"};
    response.setCharacterEncoding("UTF-8");//设置字符编码
    // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
    DiskFileItemFactory dfif = new DiskFileItemFactory();
    // 用以上工厂实例化上传组件
    ServletFileUpload sfu = new ServletFileUpload(dfif);
    // 设置最大上传尺寸
    sfu.setSizeMax(MAX_SIZE);
    // 从request得到 所有 上传域的列表
    List fileList = null;
    try{
    fileList = sfu.parseRequest(request);
    }catch(FileUploadException e){
    // 处理文件尺寸过大异常
    if(e instanceof SizeLimitExceededException){
    System.out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节<p />");
    System.out.println("<a href=\"index.jsp\" target=\"_top\">返回</a>");
        return;
    }
    e.printStackTrace();
    }
    // 没有文件上传
    if(fileList.size() == 0 || fileList == null){
    System.out.println("请选择上传文件<p />");
       System.out.println("<a href=\"upload.html\" target=\"_top\">返回</a>");
       return;
    }
    // 得到所有上传的文件
    Iterator fileItr = fileList.iterator();
    // 循环处理所有文件
    while(fileItr.hasNext()){
    FileItem fileItem = null;
    String path = null;
    long size = 0;
    // 得到当前文件
    fileItem = (FileItem)fileItr.next();
    if(fileItem ==null || fileItem.isFormField()){
    continue;
    }
    // 得到文件的完整路径
    path = fileItem.getName();
    // 得到文件的大小
    size = fileItem.getSize();
    if(size > 0){
    // 得到去除路径的文件名
    String t_name = path.substring(path.lastIndexOf("\\")+ 1);
    // 得到文件的扩展名(无扩展名时将得到全名)
    String t_text = t_name.substring(t_name.lastIndexOf(".") + 1);
    // 拒绝接受规定文件格式之外的文件类型
    int i = 0;
    int allowedExtCount   = allowedExt.length;
    for( ;i<allowedExtCount ;i++){
    if(allowedExt[i].equals(t_text))
    break;
    }
    if(i == allowedExtCount){
    System.out.println("请上传以下类型的文件<p />");
        for (i = 0; i < allowedExtCount; i++)
         System.out.println("*." + allowedExt[i]
           + "&nbsp;&nbsp;&nbsp;");
        System.out.println("<p /><a href=\"upload.html\" target=\"_top\">返回</a>");
        return;
    }
    long now = System.currentTimeMillis();
       // 根据系统时间生成上传后保存的文件名
       String prefix = String.valueOf(now);
       // 保存的最终文件完整路径,保存在web根目录下的ImagesUploaded目录下
       String u_name = request.getRealPath("/") + "ImagesUploaded/"
         + prefix + "." + t_text;
       try {
        // 保存文件
        fileItem.write(new File(u_name));
        System.out.println("文件上传成功. 已保存为: " + prefix + "." + t_text
          + " &nbsp;&nbsp;文件大小: " + size + "字节<p />");
        System.out.println("<a href=\"upload.html\" target=\"_top\">继续上传</a>");
       } catch (Exception e) {
        e.printStackTrace();
       } }
    }
    }

    }