COS文件上传小结

看到osc是用cos来做上传处理,我也来贴段我使用的代码。(大部分都是偷得红薯的)

[代码]up.html

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
		<title>无标题文档</title>
	</head>

	<body>
		<!-- enctype的值很重要,upload.jsp为处理上传的jsp-->
		<form name="form1" method="post" enctype="multipart/form-data"
			action="upload.jsp">
			<p>
				<input name="file1" type="file">
			</p>
			<p>
				<input name="file2" type="file">
			</p>
			<p>
				<input name="file3" type="file">
			</p>
			<p>
				<input type="submit" name="Submit" value="上传">
			</p>
		</form>

	</body>
</html>

[代码]upload.jsp

<%@page import="java.io.*"%>
<%@page import="java.util.Enumeration"%>
<%@page import="com.cos.util.CustomFileRenamePolicy"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@page contentType="text/html; charset=gb2312"%>
<%
	//文件上传后,保存在c:\\upload
	String saveDirectory = "c:\\";
	//每个文件最大5m,最多3个文件,所以
	int maxPostSize = 3 * 5 * 1024 * 1024;
	//response的编码为"gb2312",同时采用缺省的文件名冲突解决策略,实现上传
	//就这一句就完成上传了,真是很爽
	//MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize, "gb2312");
	// 实现文件重命名
	MultipartRequest multi = new MultipartRequest(request,
			saveDirectory, maxPostSize, "gb2312",
			// 自定义COS命名策略文件
			new CustomFileRenamePolicy());

	//输出反馈信息
	Enumeration files = multi.getFileNames();
	while (files.hasMoreElements()) {
		String name = (String) files.nextElement();
		File f = multi.getFile(name);
		if (f != null) {
			String fileName = multi.getFilesystemName(name);
			System.err.println("上传的文件名:" + fileName);
			String lastFileName = saveDirectory + "\\" + fileName;
			out.println("上传的文件:" + lastFileName);
			out.println("<hr>");
			
			// 限制文件类型方面。红薯老大说“cos限制不了,要自己控制,通过文件扩展名来限制”
			// 这是我想到的:根据MIME判断是否是合法的文件类型,不是则删除
			if (!multi.getContentType(name).contains("image")) {
				new File(lastFileName).delete();
			}
		}
	}
%>
[代码]CustomFileRenamePolicy.java
package com.cos.util;

import java.io.File;
import java.util.UUID;

import com.oreilly.servlet.multipart.FileRenamePolicy;

/**  
 *
 * Description: 自定义COS命名策略文件  <br>
 * 
 *  
 */

public class CustomFileRenamePolicy implements FileRenamePolicy {

	public File rename(File file) {
		// 生成UUID
		String uuid = UUID.randomUUID().toString().replaceAll("-", "");
		int index = file.getName().lastIndexOf(".");
		// 新文件名 = uuid + 后缀名
		String newName = uuid + file.getName().substring(index);
		file = new File(file.getParent(), newName);
		return file;
	}

}

参考文档:
http://www.oschina.net/code/snippet_12_1344
http://blog.sina.com.cn/s/blog_52f605350100c2c7.html


转载于:https://my.oschina.net/backtract/blog/142484

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值