`

Java Web上传组件使用:Cos

阅读更多

因工作原因,已经好久没有上线也有更新博客了,比较了一下比较常用的JavaWeb上传组件。这里介绍的是Cos。网上也有很多它的介绍,总之只有经过自己用过才能知道它好不好。

一、JSP页面如下:

<body>
		<form method="POST" action="CosUploadServlet" ENCTYPE="multipart/form-data">
			<table>
				<tr><td><input type="text" name="subject" /></td></tr>
				<tr><td><input type="file" name="file1"/></td></tr>
				<tr><td><input type="file" name="file2"/></td></tr>
				<tr><td><input type="file" name="file3"/></td></tr>
				<tr><td><input type="submit" value="上传"/></td></tr>
			</table>  		
  		</form>
  		<br/>
  		<a href="CosDownloadServlet">下载</a>
	</body>

 

二、上传的Servlet如下:

/**
 * 使用cos组件实现文件上传
 * 
 * @author mingxue.zhang@163.com
 * 
 */
public class CosUploadServlet extends HttpServlet {

	private static final long serialVersionUID = -9116026245071140150L;

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		File fileDir = new File(this.getServletContext()
				.getRealPath("/FileDir"));
		if (!fileDir.exists()) {
			fileDir.mkdirs();
		}
		// 设置上传文件的大小,超过这个大小 将抛出IOException异常,默认大小是1M。
		int inmaxPostSize = 10 * 1024 * 1024;
		MultipartRequest multirequest = null;
		// 上传文件重命名策略
		RenamePolicyCos myRenamePolicyCos = new RenamePolicyCos();
		try {
			// MultipartRequest()有8种构造函数!
			multirequest = new MultipartRequest(request, fileDir
					.getAbsolutePath(), inmaxPostSize, "GBK", myRenamePolicyCos); // GBK中文编码模式上传文件
			String subject = multirequest.getParameter("subject");// 获取普通信息
			System.out.println(subject);
			Enumeration<String> filedFileNames = multirequest.getFileNames();
			String filedName = null;
			if (null != filedFileNames) {
				while (filedFileNames.hasMoreElements()) {
					filedName = filedFileNames.nextElement();// 文件文本框的名称
					// 获取该文件框中上传的文件,即对应到上传到服务器中的文件
					File uploadFile = multirequest.getFile(filedName);
					if (null != uploadFile && uploadFile.length() > 0) {
						System.out.println(uploadFile.getName());
						System.out.println(uploadFile.getPath());
						System.out.println(uploadFile.length());
					}
					// 获取未重命名的文件名称
					String Originalname = multirequest
							.getOriginalFileName(filedName);
					System.out.println(Originalname);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}
}

 

/**
 * 文件命名策略
 * 
 * @author mingxue.zhang@163.com
 * @date 2010-10-29
 */
public class RenamePolicyCos implements FileRenamePolicy {

	public File rename(File uploadFile) {
		String newName = getNewFileName(uploadFile.getName());
		File renameFile = new File(uploadFile.getParent(), newName);
		return renameFile;
	}

	private String getNewFileName(String fileName) {
		StringBuffer newName = new StringBuffer();
		if (null != fileName && !"".equals(fileName)) {
			String type = "";
			String name = "";
			if (fileName.indexOf(".") != -1) {
				type = fileName.substring(fileName.indexOf("."));
				name = fileName.substring(0, fileName.indexOf("."));
			}else{
				name = fileName;
			}
			newName.append(name);
			newName.append(getSuffix());
			newName.append(type);
		}
		return newName.toString();
	}
	
	
	private String getSuffix(){
		StringBuffer suffix = new StringBuffer("_");
		String now = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss").format(new Date());
		suffix.append(now);
		suffix.append("_");
		Random random = new Random();
		String randomValue = String.valueOf(random.nextInt(1000));
		suffix.append(randomValue);
		return suffix.toString();
	}

//	public static void main(String[] args) {
//		RenamePolicyCos my = new RenamePolicyCos();
//		System.out.println(my.getNewFileName("log.txt"));
//	}

}

 三、下载的Servlet如下:

 

 

/**
 * 使用cos组件实现文件下载
 * 
 * @author mingxue.zhang@163.com
 * @date 2010-10-29
 */
public class CosDownloadServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String filePath = "D:\\Tomcat\\apache-tomcat-6.0.26\\webapps\\CosUpload\\FileDir\\";
		String fileName = "2010年10月安排_2010_10_29_04_52_06_178.txt";
		String Originalname = "2010年10月安排.txt";
		String isofilename = new String(Originalname.getBytes("gb2312"),
				"ISO8859-1");
		response.setContentType("application/octet-stream");
		response.setHeader("Content-Disposition", "attachment; filename="
				+ isofilename);
		ServletOutputStream out = null;
		try {
			out = response.getOutputStream();
			ServletUtils.returnFile(filePath + fileName, out);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (null != out) {
				out.close();
			}
		}
	}

}

 关于Servlet配置如下:

<servlet>
		<servlet-name>CosUploadServlet</servlet-name>
		<servlet-class>com.mengya.servlet.CosUploadServlet</servlet-class>
	</servlet>
	<servlet>
		<servlet-name>CosDownloadServlet</servlet-name>
		<servlet-class>com.mengya.servlet.CosDownloadServlet</servlet-class>
	</servlet>


	<servlet-mapping>
		<servlet-name>CosUploadServlet</servlet-name>
		<url-pattern>/CosUploadServlet</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>CosDownloadServlet</servlet-name>
		<url-pattern>/CosDownloadServlet</url-pattern>
	</servlet-mapping>

 

关于上传和下载需要完善的地方还有很多, 这里只是介绍了如何使用它的一些功能。

源码和jar包可以在下面下载

  • cos.jar (55.8 KB)
  • 描述: cos包
  • 下载次数: 301
3
1
分享到:
评论
2 楼 yeruowei 2013-04-28  
请问下为啥设置了上传文件大小(1024M),在上传大于1M的文件浏览器就会出现“无法显示此网页”?
1 楼 chiwey 2011-03-29  
请问如何限制上传文件的格式呢?

相关推荐

    文件上传需要cos组件:cos-26Dec2008.jar

    2. **初始化Client**:使用配置信息初始化COS的Client对象,这是与COS服务进行交互的基础。 3. **创建Bucket**:Bucket是COS中的存储空间,可以看作是文件的容器。需要先创建一个Bucket,然后才能在这个Bucket内...

    性能最好的Java文件上传组件

    使用基于COS的Java文件上传组件,开发者可以享受到以下优势: 1. **高性能**:优化的上传策略可以减少网络延迟,提高上传速度。 2. **高可用性**:云存储服务通常具有高可用性和高扩展性,能应对大流量的上传需求。 ...

    Java文件上传组件 COS.7z

    综上所述,Java文件上传组件COS.7z很可能是包含了实现上述功能的代码示例、配置文件、文档或其他辅助资源,帮助开发者快速集成和使用腾讯云COS服务。在实际项目中,理解这些知识点并正确应用,可以有效地实现安全、...

    基于Java的文件上传组件 COS.zip

    【描述】基于Java的文件上传组件COS.zip包含了一些关键组成部分,用于帮助开发者快速集成和使用该组件: 1. **license.txt**: 这个文件通常包含了软件的许可协议,定义了用户可以如何使用、修改和分发代码。阅读并...

    基于java的文件上传组件 COS.zip

    【标题】"基于Java的文件上传组件COS.zip"指的是一个使用Java语言开发的文件上传组件,该组件可能被设计用于将用户端的文件上传到特定的存储服务,如腾讯云对象存储(COS,Cloud Object Storage)。这个组件可能是...

    基于Java的实例源码-文件上传组件 COS.zip

    在本压缩包“基于Java的实例源码-文件上传组件 COS.zip”中,包含的是一个使用Java语言开发的文件上传组件,它与腾讯云对象存储服务(COS,Cloud Object Storage)进行了集成。这个组件使得开发者能够方便地将本地...

    Cos组件实现上传下载

    ### Cos组件实现上传下载知识点详解 #### 一、概述 在现代Web开发中,文件的上传与下载是一项基本且常用的功能。Cos组件提供了一种简便的方式来处理这些需求。本篇文章将详细阐述如何利用Cos组件实现文件的上传和...

    java jquery_SWFUpload_COS上传组件的使用

    5. **与COS交互**:使用腾讯云的`COS` SDK或者API,获取上传文件的信息,如文件URL,以便在前端展示或进一步处理。 6. **错误处理**:在上传过程中可能会遇到各种问题,如网络中断、文件大小超限等。因此,需要设置...

    Java文件上传组件 COS源码示例

    总的来说,这个Java文件上传组件COS源码示例提供了一个便捷的方式,让我们能够在Java应用中无缝对接腾讯云的对象存储服务。通过研究源码和相关文档,我们可以深入理解文件上传的过程,提升我们的开发技能,并且能够...

    smartupload/fileupload/cos三种常用下载组件

    本话题主要涉及的是"smartupload/fileupload/cos"三种常用的下载组件,这些组件在Java JSP环境中被广泛使用。接下来,我们将深入探讨这三个组件及其在实际开发中的应用。 首先,SmartUpload是一个功能强大的Java...

    java中cos文件上传示例

    在Java开发中,文件上传是一项常见的任务,尤其是在构建Web应用时。腾讯云对象存储(Cloud Object Storage,简称COS)提供了一种高效、安全、稳定的方式来存储和分发大量数据。相较于传统的FileUpload组件,COS文件...

    SWFUpload+COS 上传组件+servelet 实现大附件上传

    标题中的“SWFUpload+COS 上传组件+servelet 实现大附件上传”是指使用SWFUpload这款JavaScript库,结合腾讯云对象存储服务(COS)以及Servlet技术,来实现大文件的分片上传功能。这是一个常见的Web应用上传方案,...

    JAVA WEB 上傳(下載于JAVAEYE)

    在Java Web中,通常使用Servlet来接收并处理HTTP请求,包括上传文件的POST请求。用户通过浏览器提交包含文件的数据,Servlet解析请求,获取文件数据,然后将其保存到服务器的指定位置。 在给定的压缩包文件中,我们...

    cos-05nov2002

    描述中提到"COS上传附件组件,直接解压即可使用",这表明这个组件是为了解决Web应用中的文件上传需求而设计的。通常,这种组件会提供一个用户友好的界面,允许用户选择本地文件并将其上传到服务器。"直接解压即可...

    jsp里面用cos进行文件上传

    对于使用JSP(JavaServer Pages)技术的开发者来说,实现文件上传的方法有很多,例如使用jspsmart公司的SmartUpload、Struts框架提供的组件等。本文将重点介绍如何使用Cos组件来实现文件上传功能。 #### Cos组件...

    JSP+Servlet+cos文件上传下载Jar包.rar

    总的来说,"JSP+Servlet+cos文件上传下载Jar包.rar"为Java Web开发提供了一个高效且易于使用的工具集,帮助开发者快速构建具备文件上传和下载功能的Web应用。通过理解并熟练运用这些库,你可以提升你的Web开发技能,...

Global site tag (gtag.js) - Google Analytics