`

servlet实现多文件上传

    博客分类:
  • java
 
阅读更多

1.fileupload.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<% 
     String path = request.getContextPath(); 
     String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
 <base href="<%=basePath%>">     
 <title>My JSP 'fileupload.jsp' starting page</title>  
    <meta http-equiv="pragma" content="no-cache"> 
    <meta http-equiv="cache-control" content="no-cache"> 
    <meta http-equiv="expires" content="0">     
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
   <meta http-equiv="description" content="This is my page"> 
  </head> 
  
  <body> 
     <!-- enctype 默认是 application/x-www-form-urlencoded --> 
     <form action="FileUpLoad" enctype="multipart/form-data" method="post" > 
               用户名:<input type="text" name="usename"> <br/> 
               上传文件:<input type="file" name="file1"><br/> 
            上传文件: <input type="file" name="file2"><br/> 
              <input type="submit" value="提交"/>  
     </form>  
  </body> 
</html> 

 2.实际处理文件上传的 FileUpLoad.java

package com.servlet.fileupload; 
   import java.io.File; 
   import java.io.*; 
   import java.io.IOException; 
   import java.io.PrintWriter;  
   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.disk.DiskFileItemFactory; 
   import org.apache.commons.fileupload.servlet.ServletFileUpload; 

   
public class FileUpLoad extends HttpServlet {  

    public void doPost(HttpServletRequest request, HttpServletResponse response)  
         throws ServletException, IOException {  
        
       request.setCharacterEncoding("utf-8");  //设置编码  
        
     //获得磁盘文件条目工厂  
      DiskFileItemFactory factory = new DiskFileItemFactory();  
       //获取文件需要上传到的路径  
      String path = this.getServletContext().getRealPath("/upload");
        factory.setRepository(new File(path));  
        //设置 缓存的大小,当上传文件的容量超过该缓存时,直接放到 暂时存储室  
        factory.setSizeThreshold(1024*1024) ;  
          
        //高水平的API文件上传处理  
        ServletFileUpload upload = new ServletFileUpload(factory);    
        try {  
            //可以上传多个文件  
           List<FileItem> list =upload.parseRequest(request);  
              
          for(FileItem item : list)  
            {  
                //获取表单的属性名字  
                String name = item.getFieldName();  
                 
              //如果获取的 表单信息是普通的 文本 信息  
                if(item.isFormField())  
                {                     
                    //获取用户具体输入的字符串 ,名字起得挺好,因为表单提交过来的是 字符串类型的  
                    String value = item.getString() ;  
                      
                    request.setAttribute(name, value);  
                }  
               //对传入的非 简单的字符串进行处理 ,比如说二进制的 图片,电影这些  
                else  
              {  
                    /** 
                     * 以下三步,主要获取 上传文件的名字 
                    */  
                    //获取路径名  
                   String value = item.getName() ;  
                    //索引到最后一个反斜杠  
                    int start = value.lastIndexOf("\\");  
                   //截取 上传文件的 字符串名字,加1是 去掉反斜杠,  
                   String filename = value.substring(start+1);  
                   request.setAttribute(name, filename);  
                     
                   //真正写到磁盘上  
               

                  OutputStream out = new FileOutputStream(new File(path,filename));  
                  InputStream in = item.getInputStream() ;  
                     
                 int length = 0 ;  
                 byte [] buf = new byte[1024] ;  
                    
               System.out.println("获取上传文件的总共的容量:"+item.getSize());  

                   // in.read(buf) 每次读到的数据存放在   buf 数组中  
                 while( (length = in.read(buf) ) != -1)  
                  {  
                       //在   buf 数组中 取出数据 写到 (输出流)磁盘上  
                     out.write(buf, 0, length);  
                         
                   }  
                     
                 in.close();  
                  out.close();  
               }  
      }  
            
} catch (FileUploadException e) {  
           // TODO Auto-generated catch block  
          e.printStackTrace();  
       }  
catch (Exception e) {  
          e.printStackTrace();  
}  
        
    request.getRequestDispatcher("filedemo.jsp").forward(request, response);  
        
  } 

 

3.filedemo.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<% 
    String path = request.getContextPath(); 
   String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html>  
   <head>  
   <base href="<%=basePath%>">  
     
    <title>My JSP 'filedemo.jsp' starting page</title>  
      
    <meta http-equiv="pragma" content="no-cache">  
    <meta http-equiv="cache-control" content="no-cache">  
    <meta http-equiv="expires" content="0">      
   <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
    <meta http-equiv="description" content="This is my page">  
    <!-- 
    <link rel="stylesheet" type="text/css" href="styles.css"> 
    -->  
 
  </head>  
    
<body>  
    用户名:${requestScope.usename } <br/>  
    文件:${requestScope.file1 }<br/>  
    ${requestScope.file2 }<br/>  
   <!-- 把上传的图片显示出来 -->  
    <img alt="go" src="upload/<%=(String)request.getAttribute("file1")%> " />  
   
 </body> 
</html>

分享到:
评论

相关推荐

    Java+Servlet实现多文件上传(非第三方jar包)

    本文将深入探讨如何使用Java和Servlet实现多文件上传,而无需依赖任何第三方库,如Apache Commons FileUpload。以下是对该技术的详细解释: 首先,我们需要理解HTTP协议中的`multipart/form-data`编码类型,这是...

    Servlet实现多文件上传功能

    本篇文章将详细讲解如何使用Servlet实现文件上传功能,特别是多文件上传。 首先,要实现文件上传,我们需要依赖Apache Commons FileUpload和Commons IO库。这两个库提供了处理文件上传的API,使得我们能够方便地...

    servlet多文件上传(带进度条)

    本示例主要讨论的是如何使用Servlet实现多文件上传,并且在此过程中添加进度条功能,为用户提供更好的交互体验。 首先,我们要理解文件上传的基本原理。在HTML表单中,我们可以使用`&lt;input type="file" multiple&gt;`...

    CKEditor 上传文件(Servlet实现)

    通过以上步骤,你可以成功地在CKEditor 3.6.0中集成Servlet实现的文件上传功能。这个过程不仅适用于图片,还可以扩展到其他类型的文件,如文档、音频和视频。注意在实际应用中,根据服务器环境和项目需求进行相应的...

    JSP+Servlet实现文件上传到服务器功能

    本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao、service、servlet 这三层是主要的结构,类似 MVC ...

    flash+servlet 多文件上传

    【标题】"Flash + Servlet 实现多文件上传" 在Web开发中,文件上传是一个常见的功能,尤其是当用户需要上传多个文件时。本示例通过结合Flash技术和Servlet来实现这一功能,利用AS3.0(ActionScript 3.0)作为Flash...

    servlet实现文件上传功能

    总结来说,Servlet实现文件上传功能涉及了HTTP协议、Servlet API的使用、文件I/O操作、安全性考量以及用户交互优化等多个方面。通过深入理解和实践这些知识点,我们可以构建出健壮、安全的文件上传功能。

    servlet jsp javabean 实现的文件上传

    这里我们将深入探讨如何使用这三个技术实现文件上传功能。 Servlet是Java编程语言中的一个接口,由Java Servlet API提供,用于扩展服务器的功能。在文件上传场景中,Servlet通常作为接收HTTP请求并处理数据的后端...

    用servlet实现了文件上传

    在Servlet中实现文件上传的基本步骤如下: 1. **配置Servlet**:在`web.xml`文件中注册Servlet,指定它将处理的请求URL。例如: ```xml &lt;servlet&gt; &lt;servlet-name&gt;UploadServlet&lt;/servlet-name&gt; &lt;servlet-class&gt;...

    servlet实现的上传文件实例

    综上所述,Servlet实现的文件上传涉及了HTTP协议、Servlet API、文件存储策略、安全控制等多个方面。理解并熟练掌握这些知识点,对于开发高效且安全的文件上传功能至关重要。在实际项目中,我们还需要考虑并发处理、...

    servlet实现文件上传下载

    本教程将详细讲解如何使用Servlet实现文件的上传和下载功能,其中涉及到的主要技术点包括Servlet API、Multipart解析以及文件流操作。 首先,我们需要了解Servlet在文件上传中的作用。Servlet在接收到客户端(通常...

    Servlet实现文件上传,可多文件上传示例

    Servlet 实现文件上传功能是 Web 开发中常见的一项任务,主要涉及到 HTTP 协议、HTML 表单以及服务器端的处理。在这个示例中,我们将使用 Apache Commons FileUpload 和 Commons IO 这两个库来帮助我们处理文件上传...

    jsp+servlet实现文件上传下载

    ### jsp+servlet实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...

    servlet 文件上传下载例子

    在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...

    Servlet实现文件上传与下载

    ### Servlet实现文件上传与下载 #### 一、概述 在Web开发中,文件的上传与下载是一项非常常见的功能需求。本文将详细介绍如何使用Java Servlet技术实现文件的上传和下载功能。我们将通过一个简单的示例来展示整个...

    基于Servlet实现文件的上传与下载

    "基于Servlet实现文件的上传与下载"是一个常见的实战任务,它涵盖了网络编程、多线程和文件I/O等多个核心概念。这里我们将深入探讨如何利用Servlet来实现这两个功能。 首先,让我们了解Servlet的工作原理。Servlet...

    plupload 实现多文件上传

    Plupload 是一个强大的、跨...通过这个示例,你可以了解到如何结合Plupload、JSP和Servlet实现多文件上传功能。这个解决方案不仅适用于Web应用,也适用于移动应用的后台服务,帮助开发者轻松处理用户上传的大批量文件。

    vue+servlet的文件上传案例.rar

    本示例结合了前端的Vue.js框架和后端的Servlet技术,提供了一种实现文件上传的解决方案。Vue.js是一个轻量级的渐进式JavaScript框架,而Servlet则是Java Web开发中的核心组件,用于处理HTTP请求和响应。接下来,我们...

    使用Servlet实现文件的上传与下载

    本教程将详细讲解如何使用Servlet实现文件的上传和下载功能,这对于任何Web应用程序来说都是至关重要的。 首先,我们来了解一下Servlet的基本概念。Servlet是Java编程语言中一个用于扩展服务器功能的接口,主要应用...

Global site tag (gtag.js) - Google Analytics