源码(一) - ServletFileUpload和FileUpload
一.概述
二.类继承关系
![](/assets/blank.gif)
三.类方法
![](/assets/blank.gif)
四.ServletFileUpload源码
// 1.2.1
package org.apache.commons.fileupload.servlet;import java.io.IOException;
import java.util.List;import javax.servlet.http.HttpServletRequest;import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;/*** <p>用于处理文件上传的高级API</p>** 本类处理由html widget发送的multipart/mixed编码类型、RFC 1867(http://www.ietf.org/rfc/rfc1867.txt)指定的多个文件* 使用parseRequest(HttpServletRequest)方法获取与给定的html widget相关联的org.apache.commons.fileupload.FileItem列表** 上传文件是保存在内存,缓存到本地,还是其他地方,由DiskFileItemFactory决定*/
public class ServletFileUpload extends FileUpload {/*** 构造此类的未初始化实例* 在尝试解析请求之前,必须调用setFileItemFactory(FileItemFactory factory)方法配置FileItemFactory*/public ServletFileUpload() {super();}/*** 构造本类的一个实例* 本类用提供的factory去创建FileItem实例* @param fileItemFactory The factory to use for creating file items.*/public ServletFileUpload(FileItemFactory fileItemFactory) {super(fileItemFactory);}/*** 确定请求是否包含多部分内容。可用来判断是否是文件上传请求** @param request servlet请求对象,必须非空* @return true:文件上传请求*/public static final boolean isMultipartContent(HttpServletRequest request) {// 文件上传一定是post请求if (!"post".equals(request.getMethod().toLowerCase())) {return false;}String contentType = request.getContentType();if (contentType == null) {return false;}// 文件上传内容类型一定以multipart/开头if (contentType.toLowerCase().startsWith(MULTIPART)) {return true;}return false;}/*** 解析上传文件的multipart/form-data流,返回按照传输顺序解析出的FileItem实例列表* http://www.ietf.org/rfc/rfc1867.txt RFC 1867** @param request 被解析的servlet请求* @return 按照传输顺序,从请求中解析出的FileItem实例列表* @throws FileUploadException 如果读/解析请求或存储文件有问题。*/public List /* FileItem */ parseRequest(HttpServletRequest request) throws FileUploadException {return parseRequest(new ServletRequestContext(request));}/*** 解析上传文件的multipart/form-data流,返回按照传输顺序解析出的FileItemStream实例迭代器** @param request 被解析的servlet请求* @return 按照传输顺序,从请求中解析出的FileItemStream实例迭代器* @throws FileUploadException 如果读/解析请求或存储文件有问题* @throws IOException 发生I/O错误。 这可能是与客户端通信时的网络错误或存储上传的内容时出现的问题*/public FileItemIterator getItemIterator(HttpServletRequest request) throws FileUploadException, IOException {return super.getItemIterator(new ServletRequestContext(request));}
}
五.FileUpload源码
package org.apache.commons.fileupload;public class FileUpload extends FileUploadBase {// 用于创建FileItem的工厂private FileItemFactory fileItemFactory;/*** 构造此类的未初始化实例* 一个FileItemFactory必须被配置,在解析请求之前用过调用setFileItemFactory方法配置*/public FileUpload() {super();}/*** 使用给定的fileItemFactory构造此类的实例*/public FileUpload(FileItemFactory fileItemFactory) {super();this.fileItemFactory = fileItemFactory;}/*** Returns the factory class used when creating file items.*/public FileItemFactory getFileItemFactory() {return fileItemFactory;}/*** Sets the factory class to use when creating file items.** @param factory The factory class for new file items.*/public void setFileItemFactory(FileItemFactory factory) {this.fileItemFactory = factory;}
}
六.ServletFileUpload实例
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();// Set factory constraints
factory.setSizeThreshold(MaxMemorySize);
factory.setRepository(TempDirectory);// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);// Set overall request size constraint
upload.setSizeMax(yourMaxRequestSize);// Parse the request
List<FileItem> items = upload.parseRequest(request);
源码(一) - ServletFileUpload和FileUpload相关推荐
- SpringBoot文件上传源码解析
一.SpringMVC文件上传源码分析前言(这部分我觉得原作者写的很好) 该如何研究SpringMVC的文件上传的源码呢? 研究源码并不是仅仅知道程序是怎样运行的,而应该从宏观的角度.不同的立场去看待 ...
- UEditor之基于Java图片上传前后端源码研究
那么开始吧! 这是我的项目目录 1.从访问路径http://localhost:8081/Test/_examples/simpleDemo.html,我们主要是要看看,富文本框被加载出来之前,会调用 ...
- 基于java web servlet生鲜商城管理系统源码含报告文档
(一)目的 电子商务的迅速兴起,网上购物也为人们的生活提供了极大的便利,不受时间和空间的限制.商城系统的兴起,扩大了消费市场的空间,对于大型企业来说,建设商城系统是正确的选择,不仅要扩大销售渠道,而且 ...
- 基Android实现网上商城的系统开发(附带源码)
主要代码 HomeActivity.java 代码如下: package com.itau.jingdong.ui; import android.app.AlertDialog; import an ...
- Java高校教材征订系统的设计与实现【附源码】
大家好,最近在网上又找到了一个学习项目,在此写一篇博文记录一下,在java项目的专栏中我会持 续的更新在网上获取到的java学习项目,这个专栏是我的项目收集专栏吧.在博文中我也会陆续的加入项目的演示视 ...
- JAVA文件上传详解(附源码)
文章目录 JAVA文件上传详解(附源码) 1.准备工作 2.使用类介绍 FileItem类 ServletFileUpload类 3.代码编写 JAVA文件上传详解(附源码) 在web应用中,文件上传 ...
- spring源码分析之spring-web web模块分析
0 概述 spring-web的web模块是更高一层的抽象,它封装了快速开发spring-web需要的基础组件.其结构如下: 1. 初始化Initializer部分 1.1 Servlet3.0 的 ...
- Javascript代码在线整理工具源码
有些人在写Javascript时并不会去缩进代码,导致代码的可读性非常差,下面这个源码就是专为没有缩进过的JS代码所准备的,他可以将JS代码由杂乱无章变得井井有条,好了话不多说上源码. <!DO ...
- [ASP.NET]web实现用FTP上传、下载文件(附源码)
文章配套源码下载地址:https://download.csdn.net/download/djk8888/10486581 index.aspx 页: <%@ Page Language=&q ...
最新文章
- mac平台反编译apk,获取源码,androidmanifest和资源文件
- 深入理解RocketMQ:Consumer消费消息原理
- oracle的into的含义,请问在oracle 中select into是什么意思?
- activiti 多租户_Activiti中具有独立数据库架构的多租户
- 字符数组,字符串、数字转化
- 把一个sql where表达式转化为一个二叉树
- 小红书再度出拳整治医美 首批处置违规笔记27.9万篇
- iPhone 9真机谍照曝光:真没有什么悬念了
- php学习之路:WSDL详细解释(两)
- 黄聪:C#使用能够foreach对hashtable、List遍历时“集合已修改;可能无法执行枚举操作。”错误...
- 企业微信绑定企业邮箱服务器配置,企业微信企业邮箱开通规则说明介绍
- 从微软和思科的 IT 服务化转型过程中得到的几点思考
- 实用小技巧之电脑如何滚动截屏/截取长图
- 有哪些高质量的图片网站(社区)推荐?
- 效果图色彩与色彩搭配原理
- IPV6 over IPV4 自动隧道
- 小白必学的Ps火焰字制作教程
- oracle 渗透,ODAT:一款专门用于Oracle渗透的工具
- 项目策划 文件管理系统
- 解决svchost占用内存过高问题