javaweb中的文件上传之fileupload组件
2017-09-30 08:38
453 查看
今天我们来说一说如何完成文件上传。
1.概述
① 文件上传指的是将文件通过浏览器传输到服务器或者指定的磁盘中。
② 在一个表单中我们首先要使用file组件来上传,因为get请求无法携带大数据的请求参数,所以必须使用post方式,然后表单的编码方式也必须设置为encrytype="multipy/form-data"(这个是浏览器发送文件到服务器时,文件的编码格式为二进制的意思),这样我们就可以在服务器端的Servlet中进行接收了,但是无法再使用request.getParameter()的方式来接收,因为数据传输的格式已经变为二进制了,此时应该用request.getInputStream()的方式来接收获取参数文件的二进制流。之后再进行其他操作。
需要注意的是:虽然这种方式也可以完成文件的上传,但是我们不推荐使用这种原始的reqeust.getInputStream()来获取上传的文件,因为它处理起来太单调,无法像fileupload组件可以设置形如:最大上传文件大小等参数。
③ 我们推荐使用:fileupload组件完成文件的上传。
2.fileupload组件完成上传
① 使用准备:导入common-fileupload.jar和common-io.jar包的导入
② 基本思路:
我们可以通过common-fileupload组件当中的API获取一个由FileItem组成的额List,然后调用每一个FileItem的isFormFiled()方法判断当前的这个FileItem是一个表单域(非文件上传组件)还是一个文件域(文件上传组件),如果是表达域,可以通过FIleItem的getFiledName()和getFiledValue()获取表单当中的名称和值。如果是文件域,可以通过FileItem获取属性名,文件名,内容类型,是否在内存中,上传文件的大小,文件内容的输入流等等信息。
3.获取FileItem组成的List
两种方式
① 简单方式
FileItemFactory factory = new DiskFileItemFactry();--获取FileItem的创建工厂FileItemFactory
ServletFileUpload upload =new ServleFileUpload(factory); --将FileItem的创建工厂实例传入到ServletFileUpload实例中进行初始化
List<FileItem> items = upload.parseRequest(request); --从请求reqeust中将上传的二进制文件转换为FileItem对象
② 复杂方式
FileItemFactory factory = new DiskFileItemFactry();--获取FileItem的创建工厂FileItemFactory
factory.setThreshold(设置文件上传时允许的最大值,若超过,则将文件放入指定的临时磁盘目录下)
factory.setRepository(设置临时磁盘的位置)
ServletFileUpload upload =new ServleFileUpload(factory); --将FileItem的创建工厂实例传入到ServletFileUpload实例中进行初始化
upload.setSizeMax(设置允许上传的文件的总的大小,单位是byte,比特)
List<FileItem> items = upload.parseRequest(request); --从请求reqeust中将上传的二进制文件转换为FileItem对象
1.概述
① 文件上传指的是将文件通过浏览器传输到服务器或者指定的磁盘中。
② 在一个表单中我们首先要使用file组件来上传,因为get请求无法携带大数据的请求参数,所以必须使用post方式,然后表单的编码方式也必须设置为encrytype="multipy/form-data"(这个是浏览器发送文件到服务器时,文件的编码格式为二进制的意思),这样我们就可以在服务器端的Servlet中进行接收了,但是无法再使用request.getParameter()的方式来接收,因为数据传输的格式已经变为二进制了,此时应该用request.getInputStream()的方式来接收获取参数文件的二进制流。之后再进行其他操作。
需要注意的是:虽然这种方式也可以完成文件的上传,但是我们不推荐使用这种原始的reqeust.getInputStream()来获取上传的文件,因为它处理起来太单调,无法像fileupload组件可以设置形如:最大上传文件大小等参数。
③ 我们推荐使用:fileupload组件完成文件的上传。
2.fileupload组件完成上传
① 使用准备:导入common-fileupload.jar和common-io.jar包的导入
② 基本思路:
我们可以通过common-fileupload组件当中的API获取一个由FileItem组成的额List,然后调用每一个FileItem的isFormFiled()方法判断当前的这个FileItem是一个表单域(非文件上传组件)还是一个文件域(文件上传组件),如果是表达域,可以通过FIleItem的getFiledName()和getFiledValue()获取表单当中的名称和值。如果是文件域,可以通过FileItem获取属性名,文件名,内容类型,是否在内存中,上传文件的大小,文件内容的输入流等等信息。
3.获取FileItem组成的List
两种方式
① 简单方式
FileItemFactory factory = new DiskFileItemFactry();--获取FileItem的创建工厂FileItemFactory
ServletFileUpload upload =new ServleFileUpload(factory); --将FileItem的创建工厂实例传入到ServletFileUpload实例中进行初始化
List<FileItem> items = upload.parseRequest(request); --从请求reqeust中将上传的二进制文件转换为FileItem对象
② 复杂方式
FileItemFactory factory = new DiskFileItemFactry();--获取FileItem的创建工厂FileItemFactory
factory.setThreshold(设置文件上传时允许的最大值,若超过,则将文件放入指定的临时磁盘目录下)
factory.setRepository(设置临时磁盘的位置)
ServletFileUpload upload =new ServleFileUpload(factory); --将FileItem的创建工厂实例传入到ServletFileUpload实例中进行初始化
upload.setSizeMax(设置允许上传的文件的总的大小,单位是byte,比特)
List<FileItem> items = upload.parseRequest(request); --从请求reqeust中将上传的二进制文件转换为FileItem对象
相关文章推荐
- JAVAWEB开发之文件的上传与下载(开源组件commons-fileupload的详细使用)
- Java上传文件—FileUpload组件介绍
- 【JavaWeb-13】文件上传DiskFileItemFactory、ServletFileUpload以及注意事项、文件下载及注意事项
- Java文件上传组件 common-fileUpload 使用教程
- java组件commons-fileupload实现文件上传
- Java上传文件—FileUpload组件介绍
- java基础篇---文件上传(commons-FileUpload组件)
- java web 利用 commons-fileupload-1.2 实现文件上传 解决 中文乱码& 非文件属性的读取
- java组件commons-fileupload文件上传示例
- ---JavaWeb文件上传(commons-fileupload-x.x.x.jar的使用)
- Java Web文件上传原理分析(不借助开源fileupload上传jar包)
- Java 文件上传组件 Apache Commons FileUpload 应用指南(二)——FileUpload如何工作?
- java FileUpload 组件上传文件
- 《Java》----详解用apache的commons-fileupload组件实现文件上传
- Java 文件上传组件 Apache Commons FileUpload 应用
- JavaWeb_13_文件上传下载_演示fileupload
- Java使用Apache的FileUpload组件进行文件上传
- Java文件上传组件 common-fileUpload 使用
- JAVA学习提高之---- FileUpload组件实现多文件上传(JSP+SERVLET)实现
- Java 文件上传组件 Apache Commons FileUpload 应用指南(二)——FileUpload如何工作?