上传文件是web项目的基本功能,一般来说,客户没有特别的要求,但有时候也会遇到问题。我原来的项目中用的是jspsmart上传组件,上传小文件没有问题,上传大文件就特别慢,速度只有10-40k/s,客户要求我们提高上传速度。
经过在网上查询,发现有人推荐cos上传组件。我做了一个测试页面。
在网上下载cos组件后,解压,将lib目录下的cos.jar加入项目lib中。
做个上传的页面upload.html。
代码很简单。如下:
<html>
<head>
<title>文件上传测试</title>
</head>
<body>
<form method="post" action="cos.jsp" enctype="multipart/form-data" >
公司文件上传测试<br/>
请选择文件:<input type="file" name="file" id="file" size="80" />
<input type="submit" value="上传" />
</form>
</body>
</html>
后台cos.jsp页面:
<%@page contentType="text/html;charset=GBK"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@page import="javax.servlet.ServletContext"%>
<%@page import="com.oreilly.servlet.multipart.FileRenamePolicy"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.io.*"%>
<%@page import="java.util.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>文件上传测试</title>
</head>
<body>
<%
String saveDir = "d:/javaupload/";
int maxPostSize = 300*1024*1024;//最大上传300MB
String encoding = "GBK";
long start;
long end;
long result;
float fileSize;
float perSendSize;
start=System.currentTimeMillis();
MultipartRequest multi = null;
try{
multi = new MultipartRequest(request ,
saveDir , maxPostSize , encoding);
}catch(IOException e){
//上传大小超过maxPostSize就会出现IOException
out.println("请确认上传文件不超过300M!");
//out.println(e.getMessage());
return;
}
//获取文件信息
Enumeration fileNames = multi.getFileNames();
while(fileNames.hasMoreElements()){
//指表单中的name值
String name = (String)fileNames.nextElement();
String original = multi.getOriginalFileName(name);
if(original == null)continue;
String sysname = multi.getFilesystemName(name);
//String type = multi.getContentType(name);
end = System.currentTimeMillis();
result = (end-start)/1000;
File file = multi.getFile(name);
//File file = new File(saveDir + sysname);
long length = file.length();
fileSize = (float)length/1024/1024;
if(result==0)result=1;
perSendSize = fileSize/result;
out.println("<font color='blue'>谢谢您参与测试!测试数据已记录</font><br />" );
//request.getHeader( "user-agent ")
// out.println(request.getHeader("user-agent"));
out.println("您的IP地址是 :<font color='red'>" + request.getRemoteAddr() +"</font><br />");
out.println("您上传的原文件名称:<font color='red'>" + original +"</font><br />");
out.println("上传到服务器上的文件全名称:<font color='red'>" + saveDir + sysname +"</font><br />");
out.println("上传到服务器上的文件大小<font color='red'>:" + String.valueOf(fileSize) +"M</font><br />");
out.println("上传用时:<font color='red'>" + String.valueOf(result) +"秒</font><br />");
out.println("平均上传速度:<font color='red'>" + String.valueOf(perSendSize) +"M/秒</font><br />");
// out.println("文件类型:" + type +"<br /><br />");
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat format2=new SimpleDateFormat("yyyy-MM-dd");
String logFile = "d:/javaupload/log/" +format2.format(new Date())+"_log.txt";
FileWriter writer = new FileWriter(logFile, true);
writer.write("\r\n===========================================================================\r\n");
writer.write(format.format(new Date())+"\r\n");
writer.write("您的IP地址是 : " + request.getRemoteAddr());
writer.write("\r\n您上传的原文件名称: " + original );
writer.write("\r\n上传到服务器上的文件全名称:" + saveDir + sysname);
writer.write("\r\n上传到服务器上的文件大小:" + String.valueOf(fileSize) +"M");
writer.write("\r\n上传用时:" + String.valueOf(result) +"秒");
writer.write("\r\n平均上传速度:" + String.valueOf(perSendSize) +"M/秒");
writer.write("\r\n===========================================================================\r\n");
writer.close();
writer=null;
}
%>
<br>
<input name="submit2" type="button" value="返回" onClick="window.location='upload.html'">
</body>
</html>
后台代码主要是上传文件,记录上传文件信息,速度到日志文件,方便查看测试结果。
部署在客户服务器上后,测试的结果客户非常满意。最慢的机子速度能达到500k/s,一般的机子都能达到1m/s以上,最给力的是谷歌浏览器和火狐浏览器,能达到10m/s。表现最次的是360浏览器,30k/s,真滥。
分享到:
相关推荐
使用COS组件进行文件上传,首先要确保项目中已经正确引入了"Cos-26Dec2008.jar"。通常,这可以通过Maven或Gradle等依赖管理工具完成。如果选择手动添加,需要将该jar文件放入项目的类路径中,例如`lib`目录,并确保...
本文详细介绍了如何使用Cos组件实现文件的上传和下载功能。通过合理的表单配置、文件处理逻辑以及定制化的重命名策略,可以有效确保文件上传过程的安全性和稳定性。同时,对于文件下载,通过简单的链接创建和响应头...
本篇将详细讲解如何在Java Web项目中集成并使用COS组件进行文件上传操作。 1. **COS组件介绍** COS组件通常是由云服务提供商提供的,它允许开发者将文件存储到云端,以实现高效、安全的数据存储和访问。腾讯云的...
这个组件允许用户在网页上批量上传文件,并将它们存储到腾讯云的COS系统中。 首先,我们来了解一下jQuery。jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画制作以及Ajax交互等任务。在...
在描述中提到的“Cos组件上传及简单的应用实例”,意味着我们将探讨如何使用COS提供的SDK或组件来实现文件的上传操作,并了解如何在实际的企业级开发中应用这些功能。这通常涉及到以下几个关键步骤: 1. **SDK集成*...
使用fileupload组件实现文件上传功能 FileUpload组件是Apache提供的一款文件上传组件,能够帮助我们轻松实现文件上传功能。下面我们将详细介绍使用FileUpload组件实现文件上传功能的步骤和要点: 首先,需要引入两...
jquery+SWFUpload+COS上传组件的使用 jquery+SWFUpload+COS上传组件的使用jquery+SWFUpload+COS上传组件的使用jquery+SWFUpload+COS上传组件的使用jquery+SWFUpload+COS上传组件的使用jquery+SWFUpload+COS上传组件...
Java文件上传组件COS,全称为Cloud Object Storage,是由腾讯云提供的一种云存储服务,它支持高可用、高并发的文件存储与访问。在Java开发中,COS提供了丰富的SDK和API,使得开发者能够轻松地将应用程序与云端存储...
out.println("上传文件: " + lastFileName); out.println("<hr>"); } } %> ``` 通过上述代码,我们可以看到使用Cos组件来实现文件上传是非常简单直观的。只需要设置好相应的参数,Cos就能自动处理文件的接收和...
在循环中,你可以使用队列或列表来存储待上传文件的信息,逐个处理。 2. **批量上传**: 如果COS SDK支持批量操作,可以将多个文件打包成一个请求发送。这种方式通常效率更高,但需要注意的是,不是所有的云服务都...
基于java的开发源码-文件上传组件 COS.zip 基于java的开发源码-文件上传组件 COS.zip 基于java的开发源码-文件上传组件 COS.zip 基于java的开发源码-文件上传组件 COS.zip 基于java的开发源码-文件上传组件 COS.zip ...
cos组件上传及简单的应用实例,包括了企业级的开发,以及相应的包 和API 文件上传的改进: 增加了对于Servlet 2.4和Java 5的支持。 增加了一个ExceededSizeException类型的捕捉更容易。 增加了支持EBCDIC机。 增加...
首先,从提供的数据来看,Cos组件在上传大文件时表现出色,尤其在200M的文件上传测试中,相比于FileUpload和SmartUpload,其平均耗时显著减少,证明了它的高效性。在小文件上传方面,虽然Cos与FileUpload的差距不大...
Java中使用COS实现文件上传功能是通过使用O'Rrilly公司开发的OpenSource组件COS来实现的,该组件用于HTTP上传文件。下面将详细介绍使用COS实现文件上传功能的过程。 首先,需要下载COS的jar包,下载地址是...
// 调用putObject方法上传文件 PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); // 打印上传结果 System.out.println("文件已成功上传,ETag:" + putObjectResult.getETag()); ``` 在...
本文将深入探讨如何使用jQuery、SWFUpload和腾讯云对象存储(COS)来创建一个兼容IE6的上传组件。 首先,jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。在本案例中,...
COS这个文件上传组件可以说在几个开源的上传文件组件中性能是非常优秀的,上传速度很快(相比fileUpload,smart等组件),但在使用Struts2结合COS文件上传时要注意Struts2实现了自己的MultiPartRequest,这个过滤后的...
使用基于COS的Java文件上传组件,开发者可以享受到以下优势: 1. **高性能**:优化的上传策略可以减少网络延迟,提高上传速度。 2. **高可用性**:云存储服务通常具有高可用性和高扩展性,能应对大流量的上传需求。 ...
《jQuery + SWFUpload + COS 上传组件的使用详解》 在现代网页开发中,文件上传功能是不可或缺的一部分。jQuery + SWFUpload + COS(腾讯云对象存储)上传组件提供了一种高效、友好的文件上传解决方案。本文档旨在...
总的来说,"JSP+Servlet+cos文件上传下载Jar包.rar"为Java Web开发提供了一个高效且易于使用的工具集,帮助开发者快速构建具备文件上传和下载功能的Web应用。通过理解并熟练运用这些库,你可以提升你的Web开发技能,...