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

2020-03-06 19:46:43  卢浮宫  阅读量:559  版权声明:本文为站长原创文章,转载请写明出处


一、背景

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

二、解决方案

    进行文件分类管理:

    ①每个模块分配单独文件件(如账单分配到bill)

    ②二级目录细化到日期,文件细化到时间(/bill/20200306113726.jpg)

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

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

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

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

      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、针对历史文件特殊处理

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

最新评论:
强啊! 2020-03-06 19:49:51