`
Beaver's
  • 浏览: 390130 次
  • 性别: 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实现多文件上传功能

    主要为大家详细介绍了Servlet实现文件上传功能,还可以实现Servlet多文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

    使用mvc模式设计,jsp+servlet开发,同时可以上传两个文件,也可以自己修改下代码上传多个文件,在Servlet中使用开源fileupload包实现文件上传功能

    用JSPServlet实现文件上传.rar

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

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

    纯jsp,servlet版的文件上传与下载.同时可以上传两个文件,也可以自己修改下代码上传多个文件,这是本人的自己的代码,不是为了赚点积分,还真有点舍不得上传。工程名写成了了nostruts,是为了区分struts,用jsp写的

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

    一、Servlet实现文件上传,需要添加第三方提供的jar包 下载地址: 1) commons-fileupload-1.2.2-bin.zip: 点击打开链接 2) commons-io-2.3-bin.zip: 点击打开链接  接着把这两个jar包放到 lib文件夹下: 二:...

    Uploadify多文件上传+servlet

    Uploadify多文件上传+servlet 一个简单的例子

    jsp,servlet普通表单+文件上传

    使用 jsp和servlet ,完成一个表单内的 普通表单和文件上传功能

    Servlet文件上传、下载及缩略图的生成

    一个完整的Servlet文件上传、下载及缩略图的生成的代码,可以直接在eclipse中运行,本程序适合多包上传和下载,对于图片类文件可以生成缩略图,供大家参考,改程序已经过测试。

    Servlet实现文件上传和下载.docx

    servlet3.0将上传的文件保存在Part实例中,可以通过request对象根据上传的表单控件的name获取对应的part对象,同时也支持多个文件上传 通过part对象可直接得到文件的输入流inputStream,在通过outputStream写到本地...

    Java文件上传的Servlet

    两个文件上传到指定的文件里,如何处理输入输出流。借用了Apache的commons-fileupload-1.2.1.jar来完成文件上传。

    Servlet实现文件上传的三种方法总结

    主要介绍了Servlet实现文件上传的三种方法总结的相关资料,这里提供三种实例,帮助大家理解这部分内容,需要的朋友可以参考下

    HttpURLConnection servlet 多文件参数 断点上传

    NULL 博文链接:https://dreamoftch.iteye.com/blog/1860289

    commons—fileUpload实现多个文件案例源码

    第一步:编写可以进行多文件上传的一个jsp页面(index.jsp和index.js) 第二步:编写一个存储文件属性的bean(FileUploadBean.java) 第三步:编写一个可以用来设置 扩展名、单文件大小、总文件大小的配置文件(app1...

    flash+servlet 多文件上传

    这个是我仿照别人写的一个flash多文件上传,用flash cs4 这个版本写的,因为要用到as3.0,上传一个完整的哈,希望对大家有帮助(实现基本的功能哈,上传验证条件仿照我的自己加就可以)

    swf+java+servlet多文件上传单个进度条显示

    swf+java+servlet多文件上传单个进度条显示,简单实用,缺点项目中上传多个文件使用一个进度条显示传输进度

    swfupload实现多文件上传Demo

    swfupload实现多文件上传Demo,用servlet实现上传文件(SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统标签的文件...

    plupload 实现多文件上传

    实现多文件上传,jsp java代码非常全,可直接运行,放心下载

    jquery+swfupload+servlet_多文件上传

    在网上一个地方下的,地址忘记了。js+servlet 动态上传, 自己测试过在html页面上,可以的。谢谢那个自己做的高手!!

    多文件上传,并显示每一个的进度

    多文件上传,并显示每一个的进度。前端使用的easyui,amazeui,js等。后台使用springmcv,写的简单例子。当然使用atruts和servlet也同样可以。

Global site tag (gtag.js) - Google Analytics