在上传量较小(容量<2M,这是最常出现的情况)时,Cos比FileUpload性能并没有好很多,但SmartUpload就已经开始显出弱势。
随着容量的增大,FileUpload和SmartUpload的性能下降非常快,直到200M容量时,SmartUpload已经不堪重负崩溃了,而Cos此时的花费时间比FileUpload少了20多秒,不能不说在本次的评测中,Cos的性能位居第一。
通过对三种流行的上传组件进行对比,我认为选用Cos是比较好的。在实际的项目中,可以把上传的文件放到文件夹,文件路径存于数据库中以便于管理。
如果需要把文件上传到数据库也很简单,从Cos中已经得到了上传文件(java.io.File),其后的操作很平常所做的一样: 通过File得到inputStream,存到数据库的blob或Clob字段即可。
对于使用Struts的项目,我觉得还是使用FileUpload比较好,因为Struts天生集成了FileUpload的功能,使用FileUpload会带来很多的便利。而如果想要开发独立的上传组件,则用Cos是最好的选择,可以在Cos的基础上封装一层,暴露给业务程序员的只是一些简单易用的API,而且可以给这些API加上自定义的javaDoc,这对于实际的开发和将来的扩展都是非常方便的。
以下使用cos组件简单的实现文件上传功能:
1. 将下载的cos.jar文件所在目录加入到环境变量classpath中
2. 编写一个html文件uploadExample.htm:
1. <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN
2. http://www.w3.org/TR/html4/loose.dtd>
3. <html>
4. <head>
5. <meta http-equiv=Content-Type content=text/html; charset=gb2312>
6. <title>实现文件上传的一个例子程序</title>
7. </head>
8. <body>
9. <div align="center">
10. <!-- enctype参数很重要,当向服务器传送如片或文件这样包含非ASCII字符或二进制数的数据时,跟据RFC1867规定必须使用"mutiplepart/form-data"内容类型-->
11. </div>
12. <form name=form1 method=post enctype=multipart/form-data action=upload.jsp>
13. <div align="center">
14. <table width="255" border="1" >
15. <tr>
16. <td><input name=file12 type=file></td>
17. </tr>
18. <tr>
19. <td><input name=file2 type=file></td>
20. </tr>
21. <tr>
22. <td><input name=file3 type=file></td>
23. </tr>
24. <tr>
25. <td align="center"><input type=submit name=Submit value=提交></td>
26. </tr>
27. </table>
28. </div>
29. </form >
30. </body>
31. </html>
3. 实现上传文件功能可以写一个Servlet, 这里简单起见,写成一个upload.jsp文件:
1. <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3. <html xmlns="http://www.w3.org/1999/xhtml">
4. <head>
5. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
6. <title>实现文件上传功能 </title>
7. </head><%@page import="com.oreilly.servlet.MultipartRequest" %>
8. <%@page contentType="text/html; charset=gb2312" %>
9. <%
10. //文件上传后,保存在"f:/uploadfiles"
11. String saveDirectory = "f:/uploadfiles";
12. //每个文件最大5m,最多3个文件,所以...
13. int maxPostSize = 3 * 5 * 1024 * 1024 ;
14. //response的编码为gb2312,同时采用缺省的文件名冲突解决策略,实现上传
15. MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize, "gb2312");
16. %>
4. 将以上两个文件放到tomcat安装目录\webapps目录下的一个文件夹如uploadExample下即可
附:(http://blog.csdn.net/hdhero/archive/2005/03/22/326405.aspx)
一.SmartUpload组件例子代码:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.jspsmart.upload.*" %>
<%
//实例化上载bean
SmartUpload mySmartUpload=new SmartUpload();
//初始化
mySmartUpload.initialize(pageContext);
//设置上载的最大值,注意:如果这里设置过大会出现问题!
mySmartUpload.setMaxFileSize(500 * 1024*1024);
//上载文件
mySmartUpload.upload();
//循环取得所有上载的文件
for (int i=0;i<mySmartUpload.getFiles().getCount();i++){
//取得上载的文件
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);
if (!myFile.isMissing())
{
//取得上载的文件的文件名
String myFileName=myFile.getFileName();
//取得不带后缀的文件名
String suffix=myFileName.substring(0,myFileName.lastIndexOf('.'));
//取得后缀名
String ext= mySmartUpload.getFiles().getFile(0).getFileExt();
//取得文件的大小
int fileSize=myFile.getSize();
//保存路径
String aa=getServletContext().getRealPath("/")+"jsp\\";
String trace=aa+myFileName;
//取得别的参数
String explain=(String)mySmartUpload.getRequest().getParameter("text");
String send=(String)mySmartUpload.getRequest().getParameter("send");
//将文件保存在服务器端
myFile.saveAs(trace,mySmartUpload.SAVE_PHYSICAL);
%>
注意使用smartupload上传过大文件,或者多文件的时候可能出现CPU或内存占用过高的问题.只有重新启动容器才能恢复正常!
二.commons-fileupload组件
<%@ page language=“java”contentType=“text/html;charset=GBK”%>
<%@ page import=“java.util.*”%>
<%@ page import=“org.apache.commons.fileupload.*”%>
<html>
<head>
<title>文件上传</title>
</head>
<%
DiskFileUpload fu = new DiskFileUpload();
// 设置允许用户上传文件大小,单位:字节
fu.setSizeMax(10000000);
// 设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(4096);
// 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fu.setRepositoryPath(“D:\\Tomcat5\\TEMP”);
//开始读取上传信息
List fileItems = fu.parseRequest(request);
// 依次处理每个上传的文件
Iterator iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
//忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
String name = item.getName();
item.write(“D:\\UploadTest\\”+ name);
}
}
%>
分享到:
相关推荐
【标题】"功能强大的文件上传组件"涉及到的核心技术是HTML5中的文件上传API,这是一个现代Web应用中不可或缺的功能,尤其在交互丰富的网站和应用程序中。HTML5的File API提供了更灵活、更强大的文件处理能力,使得...
在IT行业中,大文件上传组件是一个非常重要的工具,特别是在web应用程序和云计算环境中。它解决了由于文件大小限制导致的传统上传方式的不便,使用户能够方便地上传GB级别的大型文件。本篇将围绕大文件上传组件这一...
ASP文件上传组件是一种在Web应用中处理用户上传文件的关键技术,尤其对于动态网站而言,它允许用户方便地将数据文件(如文档、图片、音频、视频等)上传至服务器。在本例中,"AN-Upload"是这样一个组件,它采用ASP...
首先,文件上传组件通常需要处理以下几个关键点: 1. **多文件选择**:用户可能需要选择多个文件进行上传。HTML5引入了`<input type="file">`元素的`multiple`属性,允许用户一次选择多个文件。 2. **文件预览**:...
"java文件上传组件包"正是这样一套工具集,旨在简化Java开发中的文件上传流程。 在Java中处理文件上传,主要涉及以下知识点: 1. **Servlet API**:在服务器端,Servlet API是处理HTTP请求的基础。`javax.servlet....
ASP.NET大文件上传组件是为了解决在ASP.NET应用程序中处理大文件上传的问题而设计的。在传统的ASP.NET环境中,由于HTTP协议的限制,单个请求的大小通常被限制在4MB左右,这对于处理大文件(如高清视频、大型文档等)...
ASP文件上传组件是一种在Web应用中用于用户向服务器上传文件的技术解决方案。该组件基于经典的ASP(Active Server Pages)脚本语言,并结合了Flash技术,以实现文件上传功能。ASP是微软开发的一种服务器端脚本环境,...
"asp.net 多文件上传组件"是为了解决这个问题而设计的一种解决方案。这类组件通常提供了一种方便、高效且用户友好的方式来批量处理文件上传。 首先,我们要理解ASP.NET中的文件上传机制。在ASP.NET中,文件上传是...
以上就是关于“JAVAWeb文件上传组件”的基本介绍,包括Apache Commons FileUpload和Commons IO的作用以及它们在Struts2框架中的使用。通过理解这些知识点,开发者可以有效地实现在Java Web应用中处理文件上传的需求...
ASP文件上传组件是一种在Web应用中用于处理用户上传文件的技术,尤其适用于ASP(Active Server Pages)环境。在ASP中,由于其内置的功能有限,通常需要借助第三方组件来实现文件上传功能。"asp文件上传组件 asp无组...
"性能最好的Java文件上传组件"是指一种优化了上传速度和资源消耗的工具,它能够有效地处理大文件上传、多文件并发上传等问题,提高应用的用户体验。在这个场景中,我们提到了基于"COS"的Java文件上传组件。COS通常指...
在这个场景中,"js 多文件上传组件"是指一种能够允许用户一次性选择并上传多个文件的前端解决方案。 多文件上传组件的实现主要包括以下几个关键点: 1. **HTML5 File API**:HTML5引入了File API,使得JavaScript...
**FLASH大文件上传组件** 在Web开发中,文件上传功能是一项常见的需求,尤其在处理大文件时,传统的HTML表单提交方式往往存在诸多限制。此时,像“FLASH大文件上传组件”这样的工具就显得尤为重要。Flash技术曾经是...
这里我们将深入探讨与"WEB 文件上传组件"相关的知识点,特别是与Java、Tomcat相关的部分。 首先,`commons-fileupload-1.3.1-bin`这个文件是Apache Commons FileUpload库的一个版本,它是Java Web应用程序中用于...
在“多文件上传组件_Flash+ASP实现多文件上传功能”这个免费资源中,可能包含了实现这一功能的完整代码和详细说明。通常,这样的组件会包含Flash前端的ActionScript代码、ASP服务器端的处理程序代码,以及可能的配置...
ASP文件上传组件,很好用的 Internet 连接和 Internet Explorer,可以查找和浏览 Web 上的所有信息。请直接单击下面的主题。在帮助的“目录”中可获得有关浏览 Internet 的
Bootstrap文件上传组件FileInput是一款强大的前端文件上传工具,尤其适合于需要实现文件批量上传的场景。这个组件基于Bootstrap框架,提供了美观的用户界面和丰富的功能,使得文件上传操作变得直观且易于实现。以下...
总结,JSP文件上传组件通常涉及JSP页面设计、Servlet处理以及第三方库如Apache Commons FileUpload的使用。理解这些知识点,开发者就能构建出健壮且安全的文件上传功能。在实际应用中,务必注意文件上传的安全性,...