1.0 什么是文件上传:
将客户端数据以文件形式封装,通过网络协议发送到服务器端。
在服务器端解析数据,最终在服务端硬盘上作为真实的文件保存
2.0 在客户端,如何将一个文件类型的数据发送到服务器端:
1.条件1,要求浏览器选择的发送方式必须是【post】
2.条件2,必须至少拥有一个file类型表单域控件
<input type='file'> (1)浏览用户机器中文件系统
(2)作为请求参数,关联文件类型的数据
3.条件3 采用网络协议不能是http协议
采用http协议升级版本RFC-1867协议
3.0 服务器端如何解析数据:
1.request: request只能解析读取http协议中的请求参数数据
无法解析RFC-1867协议中数据
2.FileUpload.jar :apache提供商业应用jar,专门解析RFC-1867协议中数据.
4.0 FileUpload.jar解析数据,生成文件的流程:
1.【数据解析工具类】 将 RFC-1867协议中包裹的每一个请求参数及其内容解析生成【临时文件 xxx.temp】
2.【磁盘工厂工具类】负责解析生成临时文件保存到服务器中指定硬盘位置 tomcat/temp/xxx.temp
3.取得当前临时文件的【基本信息-----------上传文件名称.文件类型】 test.xls
4.根据获得上传文件名称.文件类型,在服务器端创建一个对应的【空文件--test.xls】
5.通过I/O流,将临时文件保存数据导出到【空文件】
6.手动销毁调用临时文件
5.0 FileUpload.jar提供API
1.DiskFileItemFactory:磁盘工厂工具类
实际上就是FileOutputStream封装版。
负责解析生成临时文件保存到服务器中指定硬盘位置
2.ServletFileUpload:【数据解析工具类】
代替request,解析RFC-1867协议中请求参数,将它遇到的每一个请求参数,解析成一个临时文件
研发时,实在实验室模拟了RFC-1867协议的特征进行处理的。但是RFC-1867并没有为 【数据解析工具类】提供一个开放的接口
3.DiskFileItem: 描述被加载到内存中临时文件,因此这个类被叫做【临时文件类型】 实现FileItem