preparation

本节摘要:本节主要介绍上传文件到指定目录。

引入:

文件上传是开发中常用的功能,本节主要介绍用commons-fileupload-1.1.jar包实现基本的文件上传功能,即上传文件到指定的目录中,同时介绍上传过程中使用到的相关类及其方法。

下载插件:

准备需要的jar包

* commons-fileupload-1.1.jar 文件上传jar包(必须导入) 
* commons-io-1.2.jar (必须导入)如果不导入的程序编译时不会报错,但是发布后运行时会报错 
* log4j-1.2.8.jar 强烈建议导入,但在本类中不是必须的,后面的上传文件到数据库中的类中会使用 
* classes12.jar 连接oracle数据库的jar包,后面的上传文件到数据库中时必须导入

开发环境:

System:xp    JDK:1.5(开发的JDK版本)  Tomcat:5.X  Myeclipse:6.5

注意:编译的JDK版本用JDK1.4(如果用JDK1.5编译,会报”Unsupported major.minor version 49.0”错误)

项目环境:

文件上传目录介绍:

在D盘根目录新建一个test文件夹,然后在test文件夹中新建以下两个文件夹 
* temp:存放超过设置大小的文件(>2M的文件) 
* uploadfile:上传文件的存放目录(<=2M的文件)

class&method:

 *DiskFileItemFactory
 * 实现了FileItemFactory接口
 * 主要方法有:
 * public FileItem createItem(String fieldName, String contentType, boolean isFormField, String fileName)
 * setRepository(File repository);设置缓存路径 也有相应的get方法
 * setSizeThreshold(int sizeThreshold);设置上传文件内存缓冲区的大小 也有相应的get方法
 * 
 * ServletFileUpload
 * 从FileUpload继承,而FileUpload又从FileUploadBase继承
 * ServletFileUpload(FileItemFactory fileItemFactory);传入一个fileItemFactory对象,构造ServletFileUpload对象
 * List parseRequest(HttpServletRequest request);从request中获得文件请求列表
 * void setSizeMax(long sizeMax);//设置允许上传文件大小 也有相应的get方法
 * setHeaderEncoding(String encoding);//设置上传文件名编码的格式 也有相应的get方法
 * 
 * Pattern
 * 正则表达式的编译表示形式,指定为字符串的正则表达式必须首先被编译为此类的实例。
 * 然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配
 * static Pattern compile(String regex);将给定的正则表达式编译到模式中
 * Matcher matcher(CharSequence input);创建匹配给定输入与此模式的匹配器,返回此模式的新匹配器
 * 
 * FileItem
 * 抽象接口,继承Serializable
 * boolean isFormField();判断FileItem类对象封装的数据是否属于一个普通表单字段,
 *                      还是属于一个文件表单字段,如果是普通表单字段则返回true,否则返回false
 * String getName();用于获得文件上传字段中的文件名
 * String getFieldName();用于返回表单字段元素的name属性值
 * long getSize();获得上传文件的大小 单位:字节
 * getContentType();用于获得上传文件的类型
 * void write(File paramFile);用于将FileItem对象中保存的主体内容保存到某个指定的文件中
 * 
 * Matcher
 * 通过解释 Pattern 对 character sequence 执行匹配操作的引擎。 
 * 通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:
 * matches方法尝试将整个输入序列与该模式匹配。 
 * lookingAt 尝试将输入序列从头开始与该模式匹配。 
 * find 方法扫描输入序列以查找与该模式匹配的下一个子序列。 
 * String group(int group)返回在以前匹配操作期间由给定组捕获的输入子序列 
 * 
 * String
 *  boolean endsWith(String suffix)测试此字符串是否以指定的后缀结束。

start

1.新建web项目UpDown,导入上面介绍的4个jar包

2.新建upload.html文件,用于上传的前台的UI界面

upload.html

3.新建servlet文件Upload.java文件,用于对上传的文件进行处理

upload.java

4.配置web.xml文件

web.xml

5.发布项目

result

访问的URL如下:

http://localhost:8080/UpDown/upload.html

upload.html页面如下:

上传完成后跳转显示的页面如下:

检查指定的上传目录:

检查文件大小限制(上传一个大于2M的文件,然后点击”开始上传”,界面显示如下):

检查文件后缀名过滤(上传一个exe文件,然后点击”开始上传”,界面显示如下):

遗留&拓展部分:

* 1.中文乱码问题  IE界面显示乱码、上传目录乱码
 * 2.上传目录和程序不在同一台主机上的处理方式  
 * 2.文件缓存问题
 * 3.文件的端点续传功能
 * 4.上传滚动条问题

answer

1.关于中文乱码问题的解决方法

经过测试以下语句设置为utf-8即可解决,设置为gbk或gb2312都无法解决中文乱码问题

sevletFileUpload.setHeaderEncoding("utf-8");

转载于:https://www.cnblogs.com/unbentman/archive/2012/02/21/2362041.html

文件上传简介1---上传到指定的目录相关推荐

  1. Multipart/form-data文件上传简介

     理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form method="post"acti ...

  2. 文件上传--Smartupload上传组件【上】

    首先祝愿大家2013元宵节快乐! 图片等文件上传不同于单纯的数字,文件在计算机中以二进制的形式存在,文件的上传要用到Smartupload组件.我们一起学习一下如何利用Smartupload组件上传文 ...

  3. EasyExcel实现文件读取、导出、上传、下载操作

    一.EasyExcel简介 ​     Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度 ...

  4. 文档上传到服务器上,将文件上传到服务器上

    将文件上传到服务器上 内容精选 换一换 为了实现NAT Server.SAP HANA主备节点和SAP S/4HANA主备节点互相通过SSH协议跳转的功能,需要配置云服务器之间的互信.在本地PC上,生 ...

  5. ftp服务器上传文件权限设置,ftp服务器 上传文件权限设置

    ftp服务器 上传文件权限设置 内容精选 换一换 华为云对象存储服务帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用对 ...

  6. put多文件上传linux,linux 上传lftp 服务器

    LFTP : 一个功能强大的命令行FTP程序 LFTP : 一个功能强大的命令行FTP程序 大家好,这篇文章是介绍Lftp以及如何在Linux操作系统下安装的.Lftp是一个基于命令行的文件传输软件( ...

  7. 怎么把文件上传云服务器上,如何把文件上传到云服务器上

    如何把文件上传到云服务器上 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云 ...

  8. ssh怎么ftp上传文件到服务器,ssh ftp上传文件到服务器

    ssh ftp上传文件到服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别 ...

  9. 上传excel文件到服务器,excel怎么上传到云服务器

    excel怎么上传到云服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安 ...

最新文章

  1. tcp 测试工具_6款免费网络延迟测试工具
  2. 丹佛斯变频器型号说明_英威腾变频器Goodrive20系列产品型号说明及功能介绍
  3. 雷人的调查:荷兰女性的安全意识
  4. Leetcode_最后一个单词的长度
  5. sqlserver中查找长时间未提交事务
  6. winrar皮肤的更换
  7. Android可滑动画板,Android 利用 Canvas 画画板
  8. JAVA之NIO按行读写大文件,完美解决中文乱码问题
  9. AI风向标:发改委重大工程项目公布,首个无人车路测试点落户亦庄
  10. java锁的对象引用
  11. IOS开发之异步加载网络图片并缓存本地实现瀑布流(一)
  12. redis学习总结2
  13. 卷积神经网络第三周作业 Autonomous driving application - Car detection - v1
  14. SQL Server 2008 R2 彻底卸载
  15. 管家婆打印报错——进程无法访问
  16. 数据分析(六)--聚合分组,交叉表,透视表,练习
  17. 英语语法---名词性短语详解
  18. 信息安全专业面试知识点整理(密码学与信数基础)
  19. Win11系统桌面状态栏电池图标不显示怎么办?
  20. 华为芯片设计面试题_华为公司面试硬件工程师笔试题

热门文章

  1. 前端小知识点(1):undefined和null区别
  2. Taro+react开发(89):封装为一个函数渲染
  3. [html] 你有使用过IE的条件注释吗?
  4. [html] html5中的meta标签http-equiv属性有什么作用?
  5. [css] 用css创建一个三角形,并简述原理
  6. [js] 你有使用过pjax吗?它的原理是什么?
  7. 前端学习(2371):组件之间的通讯方式
  8. 前端学习(1883)vue之电商管理系统电商系统之每次只能打开一个菜单项并解决边框问题
  9. 前端学习(1882)vue之电商管理系统电商系统之设置字体颜色并添加标签
  10. 前端学习(1737):css3实现loading效果