博客首页 注册 建议与交流 排行榜 加入友情链接         宝宝相册的专门空间
推荐 投诉 搜索: 帮助

A Better Day

居善地,心善渊,与善仁,言善信,

正善治,事善能,动善时。

夫唯不争,故无尤……

Add to Google
playingfly.cublog.cn


上传组件COS 使用

下载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("<br>");
}
}
%>

 

 


  考虑到自己的项目需要,我使用了自己的命名策略,只要实现了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

 

发表于: 2008-05-04 ,修改于: 2008-05-04 15:25,已浏览175次,有评论0条 推荐 投诉


网友评论

发表评论