文件上传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= ...
随机推荐
- Python中的split,rsplit,splitlines
https://www.cnblogs.com/zhangzengqiang/p/7525175.html
- LeetCode902. Numbers At Most N Given Digit Set
题目: We have a sorted set of digits D, a non-empty subset of {'1','2','3','4','5','6','7','8','9'}. ...
- C# B站的弹幕提取
要知道B站的弹幕位置 如果只考虑视频,B站的链接格式为:https://www.bilibili.com/video/av34042815.把av后面的数字看做是唯一标记即可. 既然能够把弹幕加载出来 ...
- POJ - 1011 剪枝练习
题意:给定n条拆掉的棍子,问能凑成最短的多条相同长度棍子的最短长度 x:当前第几条正在合成的棍子 y:目前正在尝试的拆掉的棍子 z:当前长度 剪枝方案: 1.按照长度单调性排序,减少重复搜索 2.如果 ...
- PHPExcel 读取的几个例子
1.使用 PHPExcel_IOFactory 读取文件 $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); 2.使用一个特定的读取类,读 ...
- [转] Mysql命令基础
[From] http://c.biancheng.net/cpp/u/mysql_ml/ 连接Mysql数据库 mysql命令格式: mysql -h主机地址 -u用户名 -p用户密码 1) 连接到 ...
- 牛客小白月赛5 I - 区间
看到一份不错的操作..... 链接:https://www.nowcoder.com/acm/contest/135/I 来源:牛客网 Apojacsleam喜欢数组. 他现在有一个n个元素的数组a, ...
- vm12下Centos6的javaweb环境搭建
配置linux的javaweb环境之前: 1.在windows安装xshell(非必需,但是推荐) 2.在linux安装Linux与windows文件传输工具RZSZ[root@192 ~]# yum ...
- oracle12C--新特性
Orcle 12c 新特性-使用DBCA创建物理备库 >>点击这里<< Orcle 12c DG 新特性-Far Sync >>点击这里<< Orcle ...
- rancher 2.X 搭建小型web集群+mysql主从复制
一,环境配置 rancher 2.1.6 二,配置harbor私有仓库 见上文 三,配置私有镜像 01,总文件 dockerfile 为主配置文件,html 为站点文件wordpress.,官网 ...