文件上传fileupload文件接收
form表单提交数据到servlet后,使用fileupload进行接收。
fileupload 是由 apache 的 commons 组件提供的上传组件。它最主要的工作就是帮我们解析 request.getInputStream()。
fileupload 组件需要的JAR包有:
commons-fileupload.jar,核心包;
commons-io.jar,依赖包。
fileupload 简单应用
fileupload的核心类有:DiskFileItemFactory、ServletFileUpload、FileItem。
使用 fileupload 组件的步骤
1. 创建工厂类 DiskFileItemFactory 对象:DiskFileItemFactory factory = new DiskFileItemFactory()
2. 使用工厂创建解析器对象:ServletFileUpload fileUpload = new ServletFileUpload(factory)
3. 使用解析器来解析 request 对象:List<FileItem> list = fileUpload.parseRequest(request)
隆重介绍 FileItem 类,它才是我们最终要的结果。一个FileItem对象对应一个表单项(表单字段)。
一个表单中存在文件字段和普通字段,可以使用FileItem类的 isFormField()方法来判断表单字段是否为普通字段,如果不是普通字段,那么就是文件字段了。
主要方法:
String getName():获取字段的文件名称(原始文件名),普通字段值为null,文件字段为文件的名称;
String getString():获取字段的内容,如果是文件字段,那么获取的是文件内容,当然上传的文件必须是文本文件,如果是普通字段,获得字段的值;
String getFieldName():获取字段名称,例如:<input type="test" name="username"/>,返回的是username;
String getContentType():获取上传的文件的类型,例如:text/plain,如果是普通字段,值为null;
long getSize():获取字段的大小,单位:byte;
boolean isFormField():判断当前表单是否为普通文本字段,如果返回true,说明是普通字段,如果返回false,说明是文件字段;
InputStream getInputStream():获取上传文件对应的输入流,普通字段返回null;
void write(File):把上传的文件保存到指定文件中。
api链接:http://commons.apache.org/proper/commons-fileupload/javadocs/api-release/index.html
示例代码:
//创建接收文件的工厂类
DiskFileItemFactory factory = new DiskFileItemFactory();
//创建文件解析对象
ServletFileUpload sfu = new ServletFileUpload(factory);
try {
//解析request获得表单中的每一文件项(包含普通文本域)
List<FileItem> fiList = sfu.parseRequest(request);
//遍历每一个文本项
for(FileItem fi : fiList){
//获得原始文件名
String originalFilename = fi.getName();
//获得字段的内容
//Returns the contents of the file item as a String, using the default character encoding.
String content = fi.getString();
//获得字段名
String field = fi.getFieldName();
//获得字段的内容类型
String contentType = fi.getContentType();
//获得字段大小,以byte为单位
long size = fi.getSize();
//是否是普通字段
//如果true,代表普通字段(a simple form field)
//如果false,代表文件字段
boolean isFormField = fi.isFormField();
System.out.println("原始文件名:" + originalFilename);
System.out.println("字段的内容:" + content);
System.out.println("字段名:" + field);
System.out.println("字段的内容类型:" + contentType);
System.out.println("字段大小(单位:byte):" + size);
System.out.println("是否是普通字段:" + isFormField);
System.out.println("============================");
}
} catch (FileUploadException e) {
e.printStackTrace();
}
附上fileupload 的下载路径:https://pan.baidu.com/s/1kUSBAPx
密码:p4fj
文件上传fileupload文件接收的更多相关文章
- django设置并获取cookie/session,文件上传,ajax接收文件,post/get请求及跨域请求等的方法
django设置并获取cookie/session,文件上传,ajax接收文件等的方法: views.py文件: from django.shortcuts import render,HttpRes ...
- SpringMVC单文件上传、多文件上传、文件列表显示、文件下载(转)
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 本文工程 ...
- SpringMVC文件上传 Excle文件 Poi解析 验证 去重 并批量导入 MYSQL数据库
SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库 /** * 业务需求说明: * 1 批量导入成员 并且 自主创建账号 * 2 校验数据格式 且 重复导入提示 已被 ...
- struts2文件上传,文件类型 allowedTypes
struts2文件上传,文件类型 allowedTypes 1 '.a' : 'application/octet-stream', 2 '.ai' : 'application/postscript ...
- webAPI文件上传时文件过大404错误的问题
背景:最近公司有个需求,外网希望自动保存数据到内网,内网有2台服务器可以相互访问,其中一台服务器外网可以访问,于是想在 这台服务器上放个中转的接口.后来做出来以后测试发现没有问题就放线上去了,不顾发现 ...
- bootstrap文件上传fileupload插件
Bootstrap FileInput中文API整理:https://blog.csdn.net/u012526194/article/details/69937741 SpringMVC + boo ...
- form表单文件上传 servlet文件接收
需要导入jar包 commons-fileupload-1.3.2.jar commons-io-2.5.jar Upload.Jsp代码 <%@ page language="jav ...
- spring mvc文件上传(单个文件上传|多个文件上传)
单个文件上传spring mvc 实现文件上传需要引入两个必须的jar包 1.所需jar包: commons-fileupload-1.3.1.jar ...
- Struts2 单个文件上传/多文件上传
1导入struts2-blank.war所有jar包:\struts-2.3.4\apps\struts2-blank.war 单个文件上传 upload.jsp <s:form action= ...
随机推荐
- redux超易学三篇之一(单独说redux)
redux其实非常简单.当复杂的步骤被拆分,其实每一步都是很容易的. Github: 完整代码链接 本文在 create-react-app 中的 index.js 随便引入了一下. (其实不必如此. ...
- vue-persist 为 vuex 持久化!!
npm install --save vuex-persist import VuexPersistence from 'vuex-persist' const vuexLocal = new Vue ...
- php 对象方式传入参数
类是单例模式,对象方式传入参数,如果参数过多是,使用形参容易混乱 class Object { /** * 基本配置信息 * @var array */ private $config = array ...
- wepsocket 了解一下
WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实现了浏览器与服务器全双工(full-duplex ...
- PHP sprintf() 函数
PHP sprintf() 函数 先说下为什么要写这个函数的前言,这个是我在微信二次开发的一个token验证文档也就是示例文档看到的一个函数,当时非常不理解,于是查了百度,但是很多结果都很笼统,结果也 ...
- Oracle权限关于with admin option和with grant option的用法
1.with admin option with admin option的意思是被授予该权限的用户有权将某个权限(如create any table)授予其他用户或角色,取消是不级联的. 如授予A系 ...
- TimesTen LINUX 安装日志
$ ./setup.sh NOTE: Each TimesTen installation is identified by a unique instance name. The instance ...
- html5中新增的语义化的标签
html5是html最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定.目标是取代1999年所制定的HTML 4.01和XHTML 1.0标准,以期能在互联网应用迅速发展的时候,使网络 ...
- Android中用Java代码实现zip文件解压缩
如果需要下载的文件有很多是中文名的,解压时有中文名的文件出现乱码,试了很多方法不能解决问题.据说有一个Java插件包,用这个插件包可以解决中文名乱码的问题,但不知解压的文件是否要用它提供的类压缩后的文 ...
- SecureCRT 连接 CentOS虚拟机
SecureCRT 连接 CentOS虚拟机 1.安装SecureCRT SecureCRT是一款支持SSH等协议的终端仿真软件,可以在windows下登录Linux服务器,这样大大方便了开发工作.安 ...