上传文件所使用的方法有很多种,比如:jspsmart公司的jspsmartupload组件,O`Rrilly公司的cos组件,Jakarta Apache公司的commonsFileUpload组件,JavaZoom的uploadbean组件,还有Struts组件中自带的org.apache.struts.upload类工具等等。。
这几种的方法测试的结果表明cos大胜,但很不是解为什么cos有如此功效。哪儿做了处理。
有待对源码的理解。
引用
FileUpload的上传机制作一些分析,基本上,上传一个文件的过程在FileUpload中可以分为三个部分:
1.由客户端把要上传的文件生成request数据流,与服务器端建立连接
2. 在服务器端接收request流,将流缓存到内存或磁盘中(具体缓存到什么地方,将由DiskFileUpload的 setSizeThreshold(int cacheMax)方法来决定,当文件大小<cacheMax时,文件将被缓存到内存,否则将被缓存到磁盘的临时文件)
3.由服务器端的内存或是临时文件中把文件输出到指定的目录(这个目录才是指定的文件上传目录).
上述的第一步由浏览器完成,不用过多理会,重点是第二和第三步。
第二步时,由DiskFileUpload的parseRequest(...)方法(其实这个方法是继承于FileUploadBase类,真正起解析 request流作用的类是FileUploadBase)解析request流。在parseRequest(...)方法中,新建了一个 MultipartStream实例,由此实例的readBodyData()方法将上传文件的流读到FileItem实例中,FileItem实例根据设置好的cacheMax大小,引用一个内存中的数据流或是一个磁盘上的数据流,注意此时文件已经上传到了服务器,但仍然没有传到设定的上传目录。
第三步时,调用FileItem实例的write(File file)方法,将已经存在于内存或是磁盘上的上传文件流拷贝到设定好的上传目录,至此上传仍未结束,因为磁盘中很可能保存了上传文件的临时文件(当设定的cacheMax<文件大小时),如何删除这些临时文件?有两种方法:1.显示调用FileItem实例的delete()方法。2.不调用任何方法,当FileItem被垃圾回收时,由finalize()方法删除临时文件。
引用
cos的优越性得意于他对IO流的重写。BufferedServletInputStream,LimitedServletInputStream,PartInputStream 经过几次对原始流的优化。详细信息请查看cos源码。
几者之间的比较
http://www.java1995.cn/article/735.html
分享到:
相关推荐
在本项目中,设计者通过硬件实现正弦和余弦函数,相比软件计算,FPGA的优势在于速度极快且实时性好,适合于对速度要求高的应用,如音频、视频处理和通信系统。 2. **Verilog语言** Verilog是硬件描述语言之一,...
在嵌入式系统领域,COS扮演着至关重要的角色,它负责管理芯片上的硬件资源,提供软件服务,并确保系统的稳定运行。COS的核心目标是实现高效能、低功耗和高度集成,以满足现代电子设备对微型化和智能化的需求。 **...
腾讯云点播Vod(Video on Demand)与对象存储COS(Cloud Object Storage)是腾讯云提供的两种关键的云计算服务,它们在构建高效、安全、弹性的多媒体应用中发挥着重要作用。 **腾讯云点播Vod** 腾讯云点播Vod是一...
COS这个文件上传组件可以说在几个开源的上传文件组件中性能是非常优秀的,上传速度很快(相比fileUpload,smart等组件),但在使用Struts2结合COS文件上传时要注意Struts2实现了自己的MultiPartRequest,这个过滤后的...
8. **移植性**:μCOS-Ⅱ的一大优势是其高度的可移植性,代码示例可能包含不同处理器平台的移植代码,展示如何将μCOS-Ⅱ迁移到新的硬件环境。 9. **实际应用**:随书代码通常会包含一些实用的应用示例,如设备驱动...
ERP,即企业资源规划(Enterprise Resource Planning)系统,是一种集成化的管理信息系统,旨在优化企业内部管理...通过有效利用 Cosmos ERP,企业有望实现成本节约、效率提升,从而在竞争激烈的市场环境中取得优势。
开源版的COS在行业内具有重要的价值,因为它允许开发者深入理解系统的内部工作原理,并根据实际需求进行定制和改进。本文将详细探讨开源版智能卡操作系统的特性、应用以及如何利用它来学习和开发。 首先,开源版的...
源码公开是μCOS的一大优势,允许开发者深入理解其工作原理,进行定制化开发,提高软件的可靠性和效率。 μCOS的核心组件包括任务管理、内存管理、信号量、消息队列、事件标志组、互斥信号量、定时器等。这些组件...
相较于传统的FileUpload组件,COS文件上传在性能和文件大小处理上具有显著优势。下面我们将深入探讨Java中如何使用COS进行文件上传,并了解其背后的原理和技术细节。 首先,我们需要引入COS的Java SDK。在`....
腾讯云COS 是腾讯云提供的分布式对象存储服务,它具有高可用性、高扩展性和低成本等优势,适用于存储各种类型的数据,如图片、视频、文档等。 集成 Laravel 和腾讯云COS 需要完成以下几个步骤: 1. **安装 SDK**:...
相比于其他商业组件或框架内置的功能,Cos的优势在于其开放源代码的特点,这使得开发者可以更自由地定制化上传逻辑,并且能够更好地理解内部工作原理。 ### 下载与配置Cos 首先,我们需要从官方网站下载最新版本的...
腾讯云COS是腾讯云提供的核心存储服务,它具备高可用性、高扩展性和低成本的优势,可广泛应用于企业级的数据备份、内容分发、媒体处理等多个场景。 COS Browser作为腾讯云COS的桌面助手,其主要功能包括: 1. **...
这篇文章可能包含了以下内容:首先,作者可能会介绍什么是云对象存储,为什么选择使用cos,它相比传统存储的优势。接着,他可能会讲解如何创建和配置cos账户,以及如何生成和管理API密钥,这对于安全地访问云存储至...
腾讯云对象存储服务(Cloud ...总的来说,这个压缩包中的jar包是实现腾讯云COS文件上传功能的关键,配合提供的教程,开发者可以快速地将腾讯云的存储服务集成到Java应用程序中,从而享受到云存储带来的便利和优势。
3. 设备优势: - 紧凑轻便:设备具有紧凑的铝压铸框架,重量轻且结构坚固。 - 操作简便:设备的操作界面设计简洁,所有控制旋钮和按钮都布局在最方便的位置,使得操作非常简单直观。 - 高亮度阴极射线管(CRT):80...
将μCOS-II移植至ARM平台,意味着能够利用ARM硬件的优势,同时享受μCOS-II提供的实时性和资源管理能力。 ### 2. 关键文件及功能 文档中提到了几个关键的文件,包括`OS_CPU.H`、`OS_CPU_C.C`、`OS_CPU_A.S`等,...
通过阅读《嵌入式实时操作系统μCOS-II》第二版,读者可以深入学习如何使用和定制μCOS-II,从而在实际项目中充分发挥其优势,构建高效、可靠的嵌入式系统。书中的实例和讲解将帮助读者逐步掌握μCOS-II的精髓,提高...
在JSP项目中,这三种组件各有优势。SmartUpload和FileUpload适用于处理本地服务器的文件上传,而COS更适合于处理云端文件的存储与下载。根据项目需求,开发者可以选择合适的组件来满足用户的需求,比如,如果项目...
### μCOSⅡ在51单片机上的移植 #### 概述 μCOSⅡ(微控制器操作系统)是一种轻量级的实时操作系统(RTOS),特别适用于资源受限的嵌入式系统。由于其开源特性、高效执行、小巧体积以及良好的实时性和可扩展性,...