`
Beaver's
  • 浏览: 396036 次
  • 性别: Icon_minigender_2
  • 来自: 天津
社区版块
存档分类
最新评论

servlet 实现多个文件上传

    博客分类:
  • web
 
阅读更多
servlet 实现多个文件上传,完整代码:
package com.commpim.performance;

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


import javax.servlet.ServletException;
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;

/**
 * Servlet implementation class for Servlet: UploadFile2Servlet
 *
 */
 public class UploadFilet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
	 //用于存放上传文件的目录
	    private String uploadPath="E:\\upFile\\";
	    private File tempPath=new File("E:\\upFile\\temp");
	    
	    /**
	     * 初始化Servlet,确保需要使用的目录都被建立<br>
	     * @throws javax.servlet.ServletException
	     */
	    
	    @Override
	    public void init() throws ServletException{
	        if(!new File(uploadPath).isDirectory())
	            new File(uploadPath).mkdir();
	        if(!tempPath.isDirectory())
	            tempPath.mkdir();
	    }
	    /**
	     * 销毁Servelt
	     */
	    public void destory(){
	        super.destroy();
	    }
	    
	   /**
	    * @param request
	    * @param response
	    * @throws javax.servlet.ServletException
	    * @throws java.io.IOException
	    */
	    
	    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
	    throws ServletException, IOException {
	        
	        //创建一个上传项目工厂,并设置其缓存数据大小和临时文件保存位置
	        DiskFileItemFactory factory=new DiskFileItemFactory();
	        factory.setSizeThreshold(4096);
	        factory.setRepository(tempPath);
	        
	        //使用项目工厂创建一个ServletFileUpload对象,用于解析文件上传请求
	        //并设置可以上传的文件的最大字节数,超过会抛出异常
	        ServletFileUpload upload=new ServletFileUpload(factory);
	        upload.setSizeMax(1000000);
	        upload.setHeaderEncoding("utf-8");
	        
	        List fileItems=null;
	        try{
	            //开始读取上传信息
	            fileItems=upload.parseRequest(request);
	            //依次处理每一个上传的文件
	            Iterator itor=fileItems.iterator();
	            //正则匹配,过滤路径取文件名
	            String regExp=".+\\\\(.+)$";
	            //过滤文件类型
	            String[] errorType={".exe",".com",".cgi",".asp"};
	            Pattern p=Pattern.compile(regExp);
	            while(itor.hasNext()){
	                FileItem item=(FileItem)itor.next();
	                
	                //忽略其他不是文件域的所有其他表单信息
	                if(!item.isFormField()){
	                    String name=item.getName();
	                    long size=item.getSize();
	                    if((name==null||name.equals(""))&&size==0)
	                        continue;
	                    Matcher m=p.matcher(name);
	                    boolean result=m.find();
	                    //如果是允许上传的文件类型就执行上传操作
	                    if(result){
	                        for(int temp=0;temp<errorType.length;temp++){
	                            if(m.group(1).endsWith(errorType[temp])){
	                                throw new IOException(name+":wrong type");
	                            }
	                        }
	                        try{
	                            //保存文件到指定的目录,如果是保存到数据库,改写这里 
                                    item.write(new File(uploadPath,m.group(1)));
	                                                                        
	                        }catch(Exception e){
	                        }
	                    }else{
	                        throw new IOException("fail to upload");
	                    }
	                }
	            }            
	        }catch(IOException e){
	        	e.printStackTrace();
	        }catch(FileUploadException e1){
	            e1.printStackTrace();
	        }
	        
	    } 
	    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
	    /** 
	    * Handles the HTTP <code>GET</code> method.
	    * @param request servlet request
	    * @param response servlet response
	    */
	    protected void doGet(HttpServletRequest request, HttpServletResponse response)
	    throws ServletException, IOException {
	        processRequest(request, response);
	    }

	    /** 
	    * Handles the HTTP <code>POST</code> method.
	    * @param request servlet request
	    * @param response servlet response
	    */
	    protected void doPost(HttpServletRequest request, HttpServletResponse response)
	    throws ServletException, IOException {
	        processRequest(request, response);
	    }

	    /** 
	    * Returns a short description of the servlet.
	    */
	    public String getServletInfo() {
	        return "cliff";
	    }
	    // </editor-fold>
}


html 代码:
<html>
<body>
<form name="fileform" method="post" action="UploadFilet"
									style="display: none; font-weight: bold;"
									enctype="multipart/form-data">
								<div align="center">
								<table width="421" border="1" bordercolor="#C5D6FC"
									id="urltable">
									<tr>
										<td width="421">
										<div align="center">Upload Files</div>
										</td>
									</tr>
									<tr>
										<td><input type="file" name="url_1" size="62" /></td>
									</tr>
									<tr>
										<td><input name="url_2" type="file" size="62" /></td>
									</tr>
								</table>
								</div>
								<p align="center"><input type="submit" name="Submit"
									value="Submit" /></p>
								</form>
</body>
</html>


参考 http://apps.hi.baidu.com/share/detail/23055527

分享到:
评论

相关推荐

    Servlet实现多文件上传功能

    在示例中,有两个文件输入字段,`file1`和`file2`,用户可以上传多个文件。 接下来,我们创建Servlet来处理文件上传。这里有一个名为`FileUpLoad.java`的Servlet示例: ```java package com.servlet.fileupload; ...

    servlet实现多文件上传

    总结起来,Servlet实现多文件上传涉及以下几个步骤: 1. 捕获`multipart/form-data`类型的POST请求。 2. 使用`HttpServletRequest`的`getParts()`方法解析上传的文件。 3. 遍历`Part`对象,获取文件信息并保存到...

    CKEditor 上传文件(Servlet实现)

    本教程将详细介绍如何通过Servlet来实现CKEditor的文件上传功能。 首先,我们需要了解Servlet的概念。Servlet是Java服务器端程序,用于处理来自客户端(如浏览器)的请求并返回响应。在CKEditor的文件上传场景中,...

    servlet实现的上传文件实例

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

    servlet实现文件上传功能

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

    servlet jsp javabean 实现的文件上传

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

    servlet实现文件上传下载

    在上面的代码中,Servlet监听"/upload"路径,当接收到文件上传请求时,使用`ServletFileUpload`解析请求,并将每个文件项写入到指定的服务器目录("uploads/")。 文件下载部分则相对简单。Servlet可以提供一个链接...

    纯jsp+servlet版的多文件上传与下载

    总结,这个项目展示了如何在传统的Java Web环境中使用JSP和Servlet实现文件上传和下载功能,同时利用Apache Commons FileUpload库简化了文件上传的复杂性。对于初学者,这是一个很好的实践案例,能够深入理解MVC模式...

    servlet 文件上传下载例子

    - **MultipartRequest**: 在Servlet中,处理文件上传通常需要解析多部分表单数据,这可以通过Apache Commons FileUpload库或Java内置的`Part`接口实现。`MultipartRequest`是Apache Commons FileUpload库中的一个类...

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

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

    js+jsp+servlet 实现跨全域多文件上传(原创)

    本示例通过JavaScript(js)、JavaServer Pages(jsp)和Servlet技术实现了一个跨域多文件上传的解决方案。以下将详细介绍这些技术如何协同工作以实现这一功能。 首先,JavaScript(js)是客户端的主要编程语言,...

    jsp+servlet实现文件上传下载

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

    jsp+servlet+mysql实现文件上传功能

    总结,实现JSP、Servlet和MySQL的文件上传功能,需要创建一个支持文件上传的JSP表单,编写一个Servlet来处理上传请求,提取文件信息,存储文件到服务器,以及使用JDBC连接MySQL并将文件信息存入数据库。整个过程涉及...

    用JSPServlet实现文件上传.rar

    【摘要】:该文介绍了在B/S模式下,通过JSP/Servlet技术实现文件上传的方法。...笔者主要介绍用JSP方式和Servlet方式实现的两个代码简短又高效率的文件上传功能。在此基础上,可以对文件上传功能进行进一步的完善......

    Uploadify多文件上传+servlet

    在IT行业中,多文件上传是一项常见的需求,尤其是在网站开发中,比如用户可能需要一次上传多个图片或者文档。Uploadify是一款非常流行的JavaScript插件,它能够实现异步的、基于Ajax的多文件上传功能,极大地提升了...

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

    本文将详细介绍如何使用Servlet实现文件上传功能,包括支持多文件上传。关键知识点包括Servlet接口、Multipart解析器、文件处理和常见配置。 首先,为了实现文件上传,我们需要依赖Apache Commons FileUpload库,它...

    使用jQuery ajaxFileUpload+servlet实现文件上传

    在这个场景下,我们将探讨如何结合`jQuery ajaxFileUpload` 和Servlet实现文件上传的功能。 首先,`jQuery ajaxFileUpload` 插件允许用户在不刷新页面的情况下上传文件,提供了一种友好的用户体验。它的主要优点...

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

    5. **并发处理**:如果需要支持多个文件上传,要考虑并发控制,避免服务器负载过高。 总的来说,Vue.js和Servlet的结合为Web应用提供了强大的文件上传能力。Vue.js负责用户交互和前端逻辑,Servlet处理后端业务逻辑...

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

    总的来说,实现Servlet多文件上传(带进度条)涉及的技术包括:Servlet的Part接口、文件流操作、Ajax异步请求、前端的进度条更新以及文件上传的错误处理和安全性措施。通过这些技术的结合,我们可以创建出一个高效且...

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

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

Global site tag (gtag.js) - Google Analytics