`

Jsp利用组件上传文件

阅读更多

1>首先创建一个HTML页面。注意,凡是要上载文件的表单都必须设置enctype属性,且属性的值必须是multipart/form-data,同时请求方法必须是POST.
<form name="myform" action="fileuploaddemo.jsp"  method="post" enctype="multipart/form-data">
 
2>commons-fileupload-1.1.jar
commons-io-1.1.jar 两个包都要引入,
因为在parseRequest(request)的类有关继承于DiskFileItem类。

3>示例

1.示例1。
    DiskFileUpload类会对mulipart类的表单中的所有字段进行处理,不只是file字段。getName()得到文件名,getString()得到表单数据内容,isFormField()可判断是否为普通的表单项。
demo1.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>File upload</title>
</head>
<body>
//必须是multipart的表单数据。
<form name="myform" action="demo1.jsp" method="post" enctype="multipart/form-data">
   Your name:<br>
   <input type="text" name="name" size="15"><br>
   File:<br>
   <input type="file" name="myfile"><br><br>
   <input type="submit" name="submit" value="Commit">
</form>
</body>
</html>
demo1.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
     pageEncoding="GB18030"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="java.util.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
   boolean isMultipart=FileUpload.isMultipartContent(request);//检查输入请求是否为multipart表单数据。
   if(isMultipart==true){
      DiskFileUpload upload=new DiskFileUpload();//为该请求创建一个DiskFileUpload对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。
      List items=upload.parseRequest(request);
      Iterator itr=items.iterator();
      while(itr.hasNext()){
            FileItem item=(FileItem)itr.next();
           //检查当前项目是普通表单项目还是上传文件。
            if(item.isFormField()){//如果是普通表单项目,显示表单内容。
                 String fieldName=item.getFieldName();
                 if(fieldName.equals("name")) //对应demo1.html中type="text" name="name"
                 out.println("the field name is"+ item.getString());//显示表单内容。
                 out.println("<br>");
             }
             else{//如果是上传文件,显示文件名。
               out.println("the upload fielname is"+item.getName());
              out.println("<br>");
            }
     }
}
else{
    out.println("the enctype must be multipart/form-data");
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>File upload</title>
</head>
<body>
</body>
</html>
2.示例2。
    上传两个文件到指定的目录。
demo2.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>File upload</title>
</head>
<body>
<form name="myform" action="demo2.jsp" method="post" enctype="multipart/form-data">
   File1:<br>
   <input type="file" name="myfile1"><br>
   File2:<br>
   <input type="file" name="myfile2"><br><br>
   <input type="submit" name="submit" value="Commit">
</form>
</body>
</html>
demo2.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
     pageEncoding="GB18030"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%String uploadPath="D:\\Dvp\\workspace4Lomboz\\Test4Jsp\\uploadfiles";
      boolean isMultipart=FileUpload.isMultipartContent(request);
      if(isMultipart==true){
           try{
                DiskFileUpload upload=new DiskFileUpload();
                List items=upload.parseRequest(request);//得到所有的文件
                Iterator itr=items.iterator();
                while(itr.hasNext()){//依次处理每个文件
                     FileItem item=(FileItem)itr.next();
                     String fileName=item.getName();//获得文件名,包括路径
                     if(fileName!=null){
                         File fullFile=new File(item.getName());
                         File savedFile=new File(uploadPath,fullFile.getName());
                         item.write(savedFile);
                      }
                }
               out.println("upload succeed");
         }
         catch(Exception e){
             e.printStackTrace();
          }
   }
   else{
         out.println("the enctype must be multipart/form-data");
   }
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>File upload</title>
</head>
<body>
</body>
</html>
3.示例3。
    上传一个文件到指定的目录,并限定文件大小。
demo3.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>File upload</title>
</head>
<body>
<form name="myform" action="demo3.jsp" method="post" enctype="multipart/form-data">
   File:<br>
   <input type="file" name="myfile"><br><br>
   <input type="submit" name="submit" value="Commit">
</form>
</body>
</html>
demo3.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
     pageEncoding="GB18030"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%File uploadPath=new File("D:\\upload");//上传文件目录
       if(!uploadPath.exists()){
            uploadPath.mkdirs();
        }
        String tempPath="d:\\upload\\temp\\"; // 临时文件目录
        File tempPathFile=new File("d:\\upload\\temp");
        if(!tempPathFile.exists()){
            tempPathFile.mkdirs();
       }
       try{
           DiskFileUpload fu=new DiskFileUpload();
           fu.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB
           fu.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb
           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){
                   File fullFile=new File(fi.getName());
                   File savedFile=new File(uploadPath,fullFile.getName());
                   fi.write(savedFile);
              }
         }
         out.println("upload succeed");
     }
     catch(Exception e){
         e.printStackTrace();
     }
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>File upload</title>
</head>
<body>
</body>
</html>
4.示例4。
    利用Servlet来实现文件上传。
Upload.java
package com.zj.sample;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
public class Upload extends HttpServlet {
    private String uploadPath="D:\\upload\\"; // 上传文件的目录
    private String tempPath= "d:\\upload\\temp\\"; // 临时文件目录
    public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {
       try {
            DiskFileUpload fu = new DiskFileUpload();
            fu.setSizeMax(4194304);
            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){
                      File fullFile=new File(fi.getName());
                      File savedFile=new File(uploadPath,fullFile.getName());
                      fi.write(savedFile);
                 }
            }
            System.out.println("upload succeed");
        }
        catch (Exception e) {
             // 可以跳转出错页面
             e.printStackTrace();
        }
   }
public void init() throws ServletException {
       File uploadPath = new File("D:\\upload");
       if (!uploadPath.exists()) {
            uploadPath.mkdirs();
       }
       File tempPathFile = new File("d:\\upload\\temp");
       if (!tempPathFile.exists()) {
           tempPathFile.mkdirs();
       }
    }
}
demo4.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>File upload</title>
</head>
<body>
// action="fileupload"对应web.xml中<servlet-mapping>中<url-pattern>的设置。
<form name="myform" action="fileupload" method="post" enctype="multipart/form-data">
   File:<br>
   <input type="file" name="myfile"><br><br>
   <input type="submit" name="submit" value="Commit">
</form>
</body>
</html>
web.xml
    <servlet>
       <servlet-name>Upload</servlet-name>
       <servlet-class>com.zj.sample.Upload</servlet-class>
     </servlet>
    <servlet-mapping>
      <servlet-name>Upload</servlet-name>
      <url-pattern>/fileupload</url-pattern>

分享到:
评论

相关推荐

    利用jspSmartUpload组件进行文件上传

    开发者通常会在JSP页面中创建一个Uploader对象,并设置相关的属性,如最大上传文件大小、允许的文件类型等。 2. **Session对象**:每个上传的文件都对应一个Session对象,用于存储文件的元信息,如文件名、类型、...

    jsp无组件上传 纯源码

    "jsp无组件上传 纯源码"指的是利用JSP技术实现文件上传功能,而无需依赖任何第三方组件或库,如Apache Commons FileUpload等。这种方法对于学习JSP基础和理解文件上传原理非常有帮助。下面将详细阐述纯JSP实现文件...

    jsp无组件文件上传

    - `count`:已上传文件数量计数器。 - `b`:字节数组,用于缓存读取的数据。 - `successful`:标记文件上传是否成功的布尔值。 - `fields`:`Hashtable`,用于存储表单字段及其值。 2. **setter方法**: - `...

    JSP无组件上传

    然而,"JSP无组件上传"是指在不依赖第三方组件的情况下,利用JSP自身的技术和Java Servlet进行文件上传的一种方法。这种方法虽然相对原始,但不失为一种简单实用的选择,尤其是对于小型项目或学习用途。 ### 数据库...

    jspsmartupload组件源码.zip_ jspSmartUpload_jsp_jsp 上传文件_jspSmartUplo

    **JSpsmartupload组件**是一个基于Java的上传文件解决方案,主要应用于JSP(Java Server Pages)环境中。这个组件提供了一种简单且强大的方式来处理用户通过网页上传的文件。在标题和描述中提到的,该组件的核心是用...

    使用jspSmartUpload组件在jsp中实现上传和下载

    2. **全面的信息获取**:提供了丰富的API,可以轻松获取上传文件的详细信息,如文件大小、类型等,同时支持文件预览。 3. **高级功能**:支持文件大小限制、自定义存储路径、重命名规则等功能,满足了不同场景下的...

    免费的 JSP多文件上传的组件.ZIP_JSP上传_jsp_jsp 上传_jsp多文件上传_jsp文件上传

    标题中的“JSP多文件上传的组件”是指用于在JavaServer Pages (JSP)环境中处理文件上传功能的软件模块。这种组件通常包含了处理文件上传请求、解析上传数据、存储文件到服务器等一系列操作所需的代码和资源。JSP上传...

    jspsmart组件(JSP文件上传专用组件)

    利用jspSmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。 3、能对上传的文件在大小、类型等方面做出限制。如此可以滤掉不符合要求...

    JSP无组件无刷新批量上传

    这种技术允许用户在不刷新整个页面的情况下,批量上传文件,从而提高了交互性和效率。以下将详细讲解这一技术的核心原理和实现方法。 JSP(JavaServer Pages)是一种动态网页开发技术,它与HTML结合,可以生成动态...

    jsp实现文件上传功能组件

    在提供的压缩包中,"上传文件"可能包含了示例代码或者使用指南,帮助开发者理解如何集成这个封装后的smartUpload组件。为了更好地利用这个组件,建议详细阅读这份文档,了解如何在JSP页面中调用组件,以及如何在...

    上传下载文件组件JSPSmart

    `JSPSmart`是一款专为Java Web开发设计的上传下载文件组件,它简化了在Web应用程序中处理文件上传和下载的复杂性,使得开发者能够更高效、安全地管理用户交互的文件操作。这个组件不仅包含了基本的文件传输功能,还...

    jsp实现文件上传文档jsp实现文件上传文档

    利用jspSmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。 * 能对上传的文件在大小、类型等方面做出限制。如此可以滤掉不符合要求的...

    jspSmartUpload组件上传和下载代码

    3. **文件类型检查**:可以根据设定的规则检查上传文件的类型,确保安全。 4. **断点续传**:在文件上传过程中,如果网络中断,可以在恢复连接后继续上传未完成的部分。 5. **进度显示**:提供上传进度条,让用户...

    JSP同时选择多文件上传MultifileUploadDemo

    在Web开发中,用户经常需要上传文件,例如图片、文档等。传统的HTML表单上传只能处理一个文件,但随着技术的发展,多文件上传的需求越来越普遍。本篇文章将详细探讨如何使用JSP(JavaServer Pages)和Flash上传工具...

    JSP 文件的上传与下载 smartupload组件

    在这个场景中,我们关注的是JSP中的文件上传和下载功能,以及如何利用SmartUpload组件来实现这一目标。SmartUpload是一个强大的文件上传组件,它简化了在JSP中处理文件上传的过程。 首先,我们要理解文件上传的基本...

    jsp上传组件 上传程序

    5. **文件存储策略**:学习如何安全地保存上传文件,包括设置文件名、防止文件覆盖、文件权限控制等。 6. **错误处理**:在实际应用中,文件上传可能会遇到各种问题,如文件大小限制、文件类型限制等,需要编写相应...

    jsp中用于文件上传的组件

    在本示例中,我们关注的是一个名为"jspsmartupload"的上传组件,它帮助开发者轻松地在JSP应用中实现文件上传功能。这个组件包含了详细的注释,使得理解和使用变得更加容易。 **一、JSP文件上传基础** 在JSP中,...

    文件上传组件(jsp)

    在Java Web环境中,我们可以利用各种库来实现这一功能,其中之一就是jspsmart文件上传组件。这个组件为开发者提供了便捷的方式来处理文件上传请求,特别适用于JSP和Servlet环境。 ### jspsmart简介 jspsmart是一款...

    jsp无组件上传jsp无组件上传

    ### JSP无组件上传技术详解 #### 一、引言 在Web开发中,文件上传是常见的需求之一。传统的文件上传通常依赖于第三方组件或框架来实现,这不仅增加了项目的复杂性,还可能引入额外的安全风险。而JSP(Java Server ...

Global site tag (gtag.js) - Google Analytics