阿里云OSS文件管理分类解决方案

2020-03-06 03:46:43  晓掌柜  版权声明:本文为站长原创文章,转载请写明出处


一、背景

    当前的项目中,文件管理使用的是阿里云的OSS。然后很大意的一点就是没有做文件分类管理(在一个总目录下)。于是就导致当前在文件管理及资源搜索时遇到很大阻力。


二、解决方案

    进行文件分类管理:

    ① 每个模块分配单独文件件(如账单分配到bill)
    ② 二级目录细化到日期,文件细化到时间(/bill/20200306113726.jpg)


三、附上阿里OSS对文件夹的官方说明

      2.1、函数

        上传Object一般使用putObject或者multipartUpload函数。例如文件名为123.jpg,那么ObjectName设置为123.jpg即可。

      2.2、名称管理

        在OSS中严格来说是没有文件夹的概念的,您在管理控制台看到的文件夹是为了方便管理,才以文件夹的方式显示出来。 

        实际上 abc/efg/123.jpg 这个路径的Object,以 / 为分隔符隔开放置,看起来就是在abc文件夹下的efg文件夹下放置的名为123.jgp

        的一个文件。

      2.3、组合说明

        结合前两点,如果123.jgp要放在abc下显示,ObjectName参数设置为 abc/123.jpg


四、部分代码实现

    try {

ossClient = getOSSClient();
/* 生成图片名称 */
String originFileName = file.getOriginalFilename();
String suffix = originFileName.substring(originFileName.lastIndexOf(".")+1);
String key = sdf.format(new Date())+"."+suffix;
key = "bill/0306/" + key;
/* 上传文件流 */
ossClient.putObject(bucketName, key ,file.getInputStream());
return getImgUrl(key);
}catch (Exception e){
e.printStackTrace();
}finally {
if(ossClient!=null){
ossClient.shutdown();
}
}

    在写入KEY时根据规则动态创建KEY的属性值即可


五、实际效果如下    


    


六、后续问题

    历史数据处理暂未得出比较好的解决方案(应该有整库迁移的方案的)

    1、历史数据按照当前规则修改
    2、针对历史文件特殊处理

    这个等待后续更新吧...


    更多精彩请关注guangmuhua.com


最新评论:

2024-01-10 15:50:18
1楼
强啊!
2020-03-06 11:49:51
2楼