2020-03-06 03:46:43 晓掌柜 版权声明:本文为站长原创文章,转载请写明出处
当前的项目中,文件管理使用的是阿里云的OSS。然后很大意的一点就是没有做文件分类管理(在一个总目录下)。于是就导致当前在文件管理及资源搜索时遇到很大阻力。
进行文件分类管理:
① 每个模块分配单独文件件(如账单分配到bill)
② 二级目录细化到日期,文件细化到时间(/bill/20200306113726.jpg)
上传Object一般使用putObject或者multipartUpload函数。例如文件名为123.jpg,那么ObjectName设置为123.jpg即可。
在OSS中严格来说是没有文件夹的概念的,您在管理控制台看到的文件夹是为了方便管理,才以文件夹的方式显示出来。
实际上 abc/efg/123.jpg 这个路径的Object,以 / 为分隔符隔开放置,看起来就是在abc文件夹下的efg文件夹下放置的名为123.jgp
的一个文件。
结合前两点,如果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、针对历史文件特殊处理
这个等待后续更新吧...