狂神说Java【网页文件上传案例】——不使用javaweb框架实现网页文件上传功能(四) —— 要使用的工具类

1、【面试:文件上传调优】

  1. 上传的文件存放在一个不能使用外界URL访问的目录下面
  2. 上传到同一个文件夹中的文件名称应该唯一:使用时间戳/UUID/MD5等手段实现
  3. 限制上传文件的最大值:因为服务器上硬盘资源很贵,不能让用户随意的使用
  4. 限制文件上传类型:比如这个文件夹只用来存储图片,那你就不能上传一个.mp4的文件

文件上传在我们生活中很常见,所以一定要掌握

2、文件上传需要使用到的3个类+1个属性

  • ServletFileUpload:在后端获取文件上传的文件数据,并将上传文件数据的表单中的每个输入项都封装为一个FileItem对象
  • FileItem
  • DiskFileItemFactory:使用ServletFileUpload解析前端表单传过来的文件数据时需要使用到DiskFileItemFactory对象,所以在获取ServletFileUpload对象之前我们需要先获取DiskFileItemFactory对象
  • fileItemFactory属性:ServletFileUpload对象的一个属性

​ ServletFileUpload负责处理上传的文件数据,并将表单中每个输入项封装成一个FileItem对象, 在使用ServletFileUpload对象解析请求时需要DiskFileItemFactory对象。所以,我们需要在进行解析工作前构造好DiskFileItemFactory对象,通过ServletFileUpload对象的构造方法或setFileItemFactory()方法设置ServletFileUpload对象的fileItemFactory属性。

3、FileItem类

【常用方法介绍】

//isFormField方法用于判断FileItem类对象封装的数据是一个普通文本表单
//还是一个文件表单,如果是普通表单字段则返回true,否则返回false
boolean isFormField();//即:只要是上传的文件,返回的就是false

//getFieldName方法用于返回表单标签name属性的值。
String getFieldName();//获取这个input的name属性值

//getString方法用于将FileItem对象中保存的数据流内容以一个字符串返回
String getString();//用字符串存储文件的数据流
    
//getName方法用于获得文件上传字段中的文件名
String getName();

//以流的形式返回上传文件的数据内容。
InputStream getInputStream()

//delete方法用来清空FileItem类对象中存放的主体内容
//如果主体内容被保存在临时文件中,delete方法将删除该临时文件。
void delete();

4、ServletFileUpload 类

​ ServletFileUpload负责处理上传的文件数据,并将表单中每个输入项封装成一个FileItem对象中 . 使用其parseRequest(HttpServletRequest) 方法可以将通过表单中每一个HTML标签提交的数据封装成一个FileItem对象,然后以List列表的形式返回,使用该方法处理上传文件简单易用

posted @ 2020-09-08 23:13  Jobito  阅读(572)  评论(0编辑  收藏  举报