免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4379 | 回复: 0
打印 上一主题 下一主题

上传组件COS 使用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-04 15:17 |只看该作者 |倒序浏览

下载COS包(
http://www.servlets.com/cos/index.html
);最后更新时间是2002年的11月05日,比较久远的一个包了。网上查了些资料,发现COS的使用非常方便,只要写一个简单的JSP页面就搞定了,具体代码如下(copy了很多前辈的代码):

%@page import="java.io.*,java.util.*,com.hing.upload.*"%>
%@page import="com.oreilly.servlet.MultipartRequest"%>
%@page contentType="text/html; charset=gb2312" %>
%
//文件上传后,保存在c:upload
String saveDirectory ="c:upload";
//每个文件最大5m,最多3个文件,所以...
int maxPostSize =3 * 100 * 1024 * 1024;
//response的编码为"gb2312",同时采用相应的命名策略(我用了自己的实现方法)冲突解决策略,实现上传
RandomFileRenamePolicy rfrp=new RandomFileRenamePolicy();
MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize,"gb2312",rfrp);
//输出反馈信息
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);
String lastFileName= saveDirectory+"" + fileName;
out.println("sucess:"+lastFileName);
out.println("
");
}
}
%>


  考虑到自己的项目需要,我使用了自己的命名策略,只要实现了FileRenamePolicy接口中的rename(File file)方法即可,实现非常方便,COS有个默认的命名策略DefaultFileRenamePolicy,只要存在重名,就会在文件名后面加上1.2.3....等数字,不想麻烦的就可以直接以下代码:

RandomFileRenamePolicy rfrp=new RandomFileRenamePolicy();
MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize,"gb2312",rfrp);
替换成:
MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize,"gb2312");
最后附上我自己的命名策略文件(其实就是简单地用时间戳命名而已)。


package com.tian.upload;
import java.io.File;
import java.util.Date;
import com.oreilly.servlet.multipart.FileRenamePolicy;
public class RandomFileRenamePolicy implements
        FileRenamePolicy {
    public File rename(File file) {
        // TODO Auto-generated method stub
        String body="";
        String ext="";
        int pot=file.getName().lastIndexOf(".");
        if(pot!=-1){
            body=(new Date()).getTime()+"";
            ext=file.getName().substring(pot);
        }else{
            body=(new Date()).getTime()+"";
            ext="";
        }
        String newName=body+ext;
        file=new File(file.getParent(),newName);
        return file;
    }
}


摘自 周建东的《优秀的上传组件--COS》一文
http://tmsoft.lsxy.com/index.php?job=tags&seekname=%E4%B8%8A%E4%BC%A0



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/484/showart_668313.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP