需导入commons-fileupload-1.2.1.jar和
commons-io-1.3.2.jarupload2.jsp<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>文件上传</title></head><body><form action="FileUploadServlet" method="post"enctype="multipart/form-data"><input type="file" size="30" name="file01" /><br /><input type="file" size="30" name="file02" /><br /><input name="up" type="submit" value="上传" /></form></body>
FileUploadServlet.javaimport java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
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.FileUploadBase.SizeLimitExceededException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;public class FileUploadServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {final long MAX_SIZE = 300 * 1024 * 1024;// 设置上传文件最大值// 允许上传的文件格式的列表final String[] allowedExt = new String[] { "jpg", "jpeg", "gif", "txt","doc", "mp3", "wma", "m4a", "rar", "zip" };response.setContentType("text/html");// 设置字符编码为UTF-8, 统一编码,处理出现乱码问题response.setCharacterEncoding("UTF-8");// 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUploadDiskFileItemFactory dfif = new DiskFileItemFactory();dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘dfif.setRepository(new File(request.getRealPath("/")+ "ImagesUploadTemp"));// 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录// 用以上工厂实例化上传组件ServletFileUpload sfu = new ServletFileUpload(dfif);// 设置最大上传大小sfu.setSizeMax(MAX_SIZE);PrintWriter out = response.getWriter();// 从request得到所有上传域的列表List fileList = null;try {fileList = sfu.parseRequest(request);} catch (FileUploadException e) {// 处理文件尺寸过大异常if (e instanceof SizeLimitExceededException) {out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节<p />");out.println("<a href=\"upload2.jsp\" target=\"_top\">返回</a>");return;}e.printStackTrace();}// 没有文件上传if (fileList == null || fileList.size() == 0) {out.println("请选择上传文件<p />");out.println("<a href=\"upload2.jsp\" target=\"_top\">返回</a>");return;}// 得到所有上传的文件Iterator fileItr = fileList.iterator();// 循环处理所有文件while (fileItr.hasNext()) {FileItem fileItem = null;String path = null;long size = 0;// 得到当前文件fileItem = (FileItem) fileItr.next();// 忽略简单form字段而不是上传域的文件域(<input type="text" />等)if (fileItem == null || fileItem.isFormField()) {continue;}// 得到文件的完整路径path = fileItem.getName();// 得到文件的大小size = fileItem.getSize();if ("".equals(path) || size == 0) {out.println("请选择上传文件<p />");out.println("<a href=\"upload2.jsp\" target=\"_top\">返回</a>");return;}// 得到去除路径的文件名String t_name = path.substring(path.lastIndexOf("\\") + 1);
System.out.println(t_name);// 得到文件的扩展名(无扩展名时将得到全名)String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);// 拒绝接受规定文件格式之外的文件类型int allowFlag = 0;int allowedExtCount = allowedExt.length;for (; allowFlag < allowedExtCount; allowFlag++) {if (allowedExt[allowFlag].equals(t_ext))break;}if (allowFlag == allowedExtCount) {out.println("请上传以下类型的文件<p />");for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++)out.println("*." + allowedExt[allowFlag] + " ");out.println("<p /><a href=\"upload2.jsp\" target=\"_top\">返回</a>");return;}long now = System.currentTimeMillis();// 根据系统时间生成上传后保存的文件名String prefix = String.valueOf(now);// 保存的最终文件完整路径,保存在web根目录下的ImagesUploaded目录下String u_name = request.getRealPath("/") + "ImagesUploaded/"+ prefix + "." + t_ext;//String filename = prefix + "." + t_ext;//根据原文件名保存文件String filename=t_name;try {// 保存文件到C:\\upload目录下fileItem.write(new File("D:\\upload\\" + filename));
System.out.println(filename);out.println("文件上传成功. 已保存为: " + t_name+ " 文件大小: " + size + "字节<p />");out.println("<a href=\"upload2.jsp\" target=\"_top\">继续上传</a>");} catch (Exception e) {e.printStackTrace();}}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doGet(request, response);}}
</html>基于fileupload文件批量上传
http://www.docin.com/p-56626321.html

commons-fileupload-1.2.1实现文件上传相关推荐

  1. 用的fileupload组件实现的大文件上传

    1.FileUploadServlet.java文件,实现上传处理 import java.io.File; import java.io.IOException; import java.io.Pr ...

  2. 如何用JSP+Servlet实现文件上传下载

    目录 一.辛老师教程 一.需要的文件: 二.上传步骤: 三.下载步骤 二.代码 1.前端 2.后端 3.web.xml 三.梳理框架 1.前端 2.后端 一.辛老师教程 一.需要的文件: (3条消息) ...

  3. PHP 文件上传类 FileUpload 高洛峰老师 细说PHP

    /**文件名为FileUpload.class.php*将与文件上传相关的成员属性和成员方法声明在一起*/class FileUpload{private $filePath; //保存上传文件将被保 ...

  4. fileupload.class.php,PHP 文件上传类 FileUpload 高洛峰老师 细说PHP

    /* *文件名为FileUpload.class.php *将与文件上传相关的成员属性和成员方法声明在一起 */ class FileUpload{ private $filePath;        ...

  5. Struts2文件上传与下载

    2019独角兽企业重金招聘Python工程师标准>>> 本文主要写的是struts2 的文件上传与下载(中文文件名问题的解决).  使用的时候直接在地址栏中输入:http://loc ...

  6. 全栈开发实战|Spring Boot文件上传与下载

    文件上传与下载是Web应用开发中常用的功能之一.接下来我们将讨论如何在Spring Boot的Web应用开发中,如何实现文件的上传与下载. 01.Spring Boot文件上传与下载 在实际的Web应 ...

  7. apache httpclient 工具类_Httpclient实现文件上传、文件下载看这篇文章就够了

    前言: 使用httpclient实现文件的上传下载,废话补不多说,直接上概念上代码. 1.相关概念: 1 HTTP HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 ...

  8. Struts2框架--学习笔记(下):OGNL表达式、值栈操作、拦截器、struts2标签、文件上传

    一.OGNL概述:OGNL是一种表达式 (1)在struts2中操作值栈数据. (2)一般把ognl在struts2中操作,和struts2标签一起使用操作值栈. (3)ognl不是strut2的一部 ...

  9. Struts2.0第三章(文件上传、ajax开发、json、Fastjson、Jackson、注解开发)

    Struts2.0文件上传: 浏览器端注意事项: 1.表单提交方式method = post: 2.表单中必须有一个<input type="file" name = &qu ...

  10. ssm上传文件进度条_Java 单文件、多文件上传 / 实现上传进度条

    日常,工作 在这里总结一下上传吧(是以前做过的练习,就汇总到个人博客吧) java ssm 框架实现文件上传 实现:单文件上传.多文件上传(单选和多选),并且用 ajax 异步刷新,在当前界面显示上传 ...

最新文章

  1. 索尼大法要专门开始搞AI了,成立Sony AI,发力游戏、影像和美食
  2. mysql密码有格式要求吗_高考日语作文10个格式要求!你能看出图中5处错误吗?...
  3. 向上造型和向下造型_学习园地 | 岭南盆景造型艺术——枝
  4. oracle rownum 学习
  5. python encode gbk_[转]Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
  6. 【H.264/AVC视频编解码技术】第四章【SPS序列参数集】
  7. linux内核源码 进程,详解:Linux内核源代码
  8. RF- BuiltIn_Run Keyword关键字系列
  9. 合群是堕落的开始,优秀是开始的独行!(孤独的自白)
  10. 支部谈心谈话工作怎么开展?_工作场所“激情”的谈话引发了读书俱乐部期间的热烈聊天
  11. 《Python语言程序设计》刘卫国主编字符串与正则表达式习题5详解(选择)
  12. Cadence OrCAD Capture 查找功能详细介绍
  13. elk6.4.3安装部署指导手册
  14. oracle 11g Data Guard物理备份库
  15. video网页能播放.mp4视频,微信不能播放的问题
  16. python: xlsx表格转为csv文件
  17. c语言程序设计中常用语句,单片机C语言编程常用语句
  18. sqlite expert 教程
  19. Python:游戏:测试打字速度
  20. 清华“差生”10年奋斗经历,只写事业,不写女人

热门文章

  1. 【Linux 内核】进程优先级与调度策略 ② ( 获取调度策略对应的进程优先级函数 | sched_get_priority_max 函数 | sched_get_priority_min 函数 )
  2. 【错误记录】VMware 虚拟机报错 ( 向 VMWare 虚拟机中的 Ubuntu 系统拷贝文件时磁盘空间不足 )
  3. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )
  4. 【运筹学】线性规划 单纯形法 ( 原理 | 约定符号 | 目标系数矩阵 C | 目标函数变量矩阵 X | 约束方程常数矩阵 b | 系数矩阵 A | 向量 | 向量符号 | 向量 Pj )
  5. 如何健壮你的后端服务
  6. 使用Filezilla Server配置FTP服务器
  7. Variational Inference
  8. css命名规范和书写规范
  9. 查看Eclipse32位还是64位以及Eclipse的编译版本号,查看JDK是32位还是64位
  10. 黑马Java学习笔记之-----单例模式