`
canofy
  • 浏览: 821812 次
  • 性别: Icon_minigender_1
  • 来自: 北京、四川
社区版块
存档分类
最新评论

java jakata commons上传

    博客分类:
  • j2EE
阅读更多
upload.java
import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
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.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 Upload extends HttpServlet {


     private static final long serialVersionUID = 1L;

 

     public void doPost(HttpServletRequest request, HttpServletResponse response)

              throws ServletException, IOException {
    	 
    	 //    	解决中文乱码
    	 
    	 String encoding="utf-8";
    	 
    	 request.setCharacterEncoding(encoding); 

         response.setContentType("text/html; charset=utf-8");

         PrintWriter out = response.getWriter();

         try {

              DiskFileItemFactory factory = new DiskFileItemFactory(); 

              ServletFileUpload sevletFileUpload = new ServletFileUpload(factory);

              // 设置允许用户上传文件大小,单位:字节,这里设为2m

              sevletFileUpload.setSizeMax(2 * 1024 * 1024 * 100);

              // 设置最多只允许在内存中存储的数据,单位:字节

              factory.setSizeThreshold(4096);

              // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录

              factory.setRepository(new File("d:\\upload\\temp"));

              // 开始读取上传信息 

              List fileItems = sevletFileUpload.parseRequest(request);

              // 依次处理每个上传的文件

              Iterator iter = fileItems.iterator(); 

              // 正则匹配,过滤路径取文件名

              String regExp = ".+\\\\(.+)$";
              
              //上传的路径
              
              String path="D:\\upload\\";

              // 过滤掉的文件类型

              String[] errorType = { ".exe", ".com", ".cgi", ".asp",".class" };
              
             String[] accessType={".rar",".txt"};

              Pattern p = Pattern.compile(regExp);

              while (iter.hasNext()) {

                   FileItem item = (FileItem) iter.next();

                   // 忽略其他不是文件域的所有表单信息

                   if (!item.isFormField()) {
                	   
                	  
                       String name = item.getName();

                       long size = item.getSize();
                       
                       double mSize=size/(1024);

                       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 + ": 非法文件类型禁止上传");

                               }

                          }

//                            for (int temp = 0; temp < accessType.length; temp++) {
//
//                                 if (!m.group(1).endsWith(accessType[temp])) {
//
//                                     throw new IOException(name + ": 非法文件类型禁止上传");
//
//                                 }
//
//                            }

                            try {

                                 // 保存上传的文件到指定的目录
                            	
                            	item.write(new File(path+ m.group(1))); 

                                 // 在下文中上传文件至数据库时,将对这里改写开始
                            	
                            	
                            	
                            	String str=m.group(1);
                            	
                            	int start=str.lastIndexOf(".")+1;
                            	
                            	int end=str.length();
                            	
                            	String fileName=str.substring(0,start-1);
                            	
                            	String type=m.group(1).substring(start, end);
                            	
                            	Date date=new Date();

                            	Calendar calendar=new GregorianCalendar();
                            	
                            	String printDate=calendar.get(calendar.YEAR)+"年";
                            	
                            	printDate+=(calendar.get(calendar.MONTH)+1)+"月";
                            	
                            	printDate+=calendar.get(calendar.DAY_OF_MONTH)+"日";
                            	
                            	SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日");
                            	
                            	//simpleDateFormat.format(date).toString();

                                 out.print("文件上传成功:<br>");
                                 
                                 out.print("文件名:"+name + "&nbsp;&nbsp;" +"<br>");
                                 
                                 out.print("上传后的文件:"+path+m.group(1)+"<br>");
                                 
                                 out.print("文件大小:"+ mSize + "K<br>");
                                 
                                 out.print("文件格式:"+type+"<br>");
                                 
                                 out.print("文件名:"+fileName+"<br>");
                                 
                                 out.print("上传时间: "+printDate+"<br>");
                                 
                                 out.print("simpleDateFormat:"+simpleDateFormat.format(date).toString());

                                 // 在下文中上传文件至数据库时,将对这里改写结束

                            } catch (Exception e) {

                                 out.println(e);

                            }
                       } else {

                            throw new IOException("上传失败!");

                       }

                   }

              }

         } catch (IOException e) {

              out.println(e);

         } catch (FileUploadException e) {

              out.println(e);

         }

     }

}


demo.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>    
    <title>DEMO</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>
    upload
    <form action="upload" method="post" enctype="multipart/form-data" name="form1">
    	<input type="file" name="file" />
    	<input type="submit" name="submit" value="上传" />     
    </form>
     <br>
  </body>
</html>


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <servlet-name>upload</servlet-name>
    <servlet-class>Upload</servlet-class>
  </servlet>
<servlet-mapping>
    <servlet-name>upload</servlet-name>
    <url-pattern>/upload</url-pattern>
  </servlet-mapping>
</web-app>

需要的包有:commons-io commons-fileupload
分享到:
评论

相关推荐

    Jakarta commons docs API CHM 格式

    commons-fileupload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力 commons-io 用来帮助进行IO功能开发.它包含三个主要的领域:Utility classes-提供一些静态方法来完成公共任务.Filters-...

    比较全面的:Jakarta-commons jar包(附: chm参考手册 & 资源简介)

    commons-fileupload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力 commons-io 用来帮助进行IO功能开发.它包含三个主要的领域:Utility classes-提供一些静态方法来完成公共任务.Filters-...

    Jakarta Commons FileUpload 用户指南

    FileUpload能以多种方式使用,这取决于你的应用需求。举个简单的例子,你可能调用一个单独的方法来解析servelt的请求,并且处理那些项目。从另一个方面来讲,你可能想自定义FileUpload来完全控制个别项目的存贮;...

    FTPCLIENT_commons-net-1.4.1_jakarta-oro-2.0.8

    Java_FTPClient实现文件上传下载,所用到的jar包有: commons-net-1.4.1.jar jakarta-oro.jar

    java实现ftp上传jar包

    java实现ftp上传jar包,里边包括edtftpj.jar、commons-net-1.4.1.jar、jakarta-oro-2.0.8.jar

    apache-commons源码及jar文件

    原始的 Java 类来自于Jakarta Tomcat 4.0 项目 Logging Commons-Logging 是一个各种 logging API实现的包裹类. Math Math 是一个轻量的,自包含的数学和统计组件,解决了许多非常通用但没有及时出现在Java标准语言...

    Java开发常用jar包

    11.commons-dbcp.jar:是一个依赖Jakarta commons-pool对象池机制的数据库连接池,Tomcat的数据源使用的就是DBCP。 12.commons-DbUtils.jar:Apache组织提供的一个资源JDBC工具类库,它是对JDBC的简单封装,对传统操作...

    JAVA技术实现上传下载文件到FTP服务器(完整)

    主要介绍了JAVA技术实现上传下载文件到FTP服务器(完整),本文使用 Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作,需要的朋友可以参考下

    commons-upload (适用Tomcat10及Java8+)

    将 commons-fileupload1.4 中的引用类 javax.* 修改为 jakarta.* ,支持Java8及Tomcat10以上运行。 使用方法:将Servlet*改为JakSrvlt*,例如 ServletFileUpload 改为 JakSrvltFileUpload 参考博主:...

    commons-fileupload-1.2.jar和commons-io-1.3.2.jar

    第1个上传组件commons-fileupload =============commons-fileupload ================ common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载。该组件简单...

    commons-fileupload-1.2.1

    这是jakarta提供的commons fileupload组件的jar包和API文档,fileupload组件可以很好的支持文件的上传。

    commons-io-1.4.jar等

    JAVA连接FTP服务器,并上传/下载文件的,使用commons-net包实现ftp服务器的访问,commons-net包封装了一些常见的网络包:ftp,smtp,pop3等..相关包:commons-net-1.4.1.jar ; commons-io-1.4.jar;jakarta-oro-2.0.8.jar

    JAVA中使用FTPClient实现文件上传下载

    在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件。  一、上传文件  原理不介绍了,大家直接...

    dy.jar

    自己写的Web开发工具包。具体包含下面4个部分: &lt;br&gt; 1. 一个简单的servlet+javabean+view的框架,并支持了Freemarker模板;... 对jakarta commons-fileupload封装便于上传下载的工具类。 &lt;br&gt;

    JAVA中使用FTPClient实现文件上传下载实例代码

    本文给大家介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件。非常不错具有参考借鉴价值,感兴趣的朋友一起学习吧

    Java通过FTP服务器上传下载文件的方法

    本文介绍了如何使用Apache Jakarta Commons Net(commons-net-3.3.jar)基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作,需要的朋友可以参考下

    培训体系管理系统-oracle-ssh

    上传的lib包中需要加入以下文件,因为容量过大,没有上传,请见谅! antlr-2.7.6.jar antlr-2.7.6rc1.jar aopalliance.jar asm.jar asm-attrs.jar asm-commons-2.2.3.jar asm-util-2.2.3.jar aspectjrt.jar ...

    用HttpClient来模拟浏览器GET POST

    如果我们自己使用java.net.HttpURLConnection来搞定这些问题是很恐怖的事情,因此在开始之前我们先要介绍一下一个开放源码的项目,这个项目就是Apache开源组织中的httpclient,它隶属于Jakarta的commons项目,目前的...

    Spring 2.0 开发参考手册

    2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring 2.0 2.7.1. 一些变化 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. 控制反转容器 3.1. 简介 3.2. 容器和bean的基本原理 3.2.1. 容器 3.2.2. ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring 2.0 2.7.1. 一些变化 2.7.1.1. Jar包 2.7.1.2. XML配置 2.7.1.3. Deprecated的类和方法 2.7.1.4. Apache OJB 2.7.1.5. iBatis 2.8. 更新的样例应用 2.9. 改进的...

Global site tag (gtag.js) - Google Analytics