怎么获取CUBA的文件存储路径

现在就是想实现以下类似网盘的功能,就是在前端显示文件夹层级关系之类的,然后对应的就是CUBA实际存储的路径,现在在获取路径上遇到了点问题,请问有没有什么好一点的解决方案推荐

可以先看看 cuba 标准文件存储 通过应用程序属性 cuba.fileStorageDir 配置文件存储位置。
但是标准的文件存储是按照年月日分子目录的,可能与你想实现的云盘功能不一致。如需实现自己的分目录存储,可以:

  1. 扩展系统的 FileDescriptor 加入自定义属性,比如部门、类型,甚至提供 path 属性可以用来配置存储路径。
  2. 扩展 系统的 FileStorage 类,重写 getStorageDir 方法,根据 FileDescriptor 中的新加属性确定文件的存放目录。

所以,如果是使用 CUBA 的标准文件存储,只要获取 FileDescriptor.createDate 然后根据年月日计算出存储路径。如果是使用自定义的文件存储,按照 FileDescriptor 的新增自定义属性计算就可以。

好的,去研究一下。谢谢

建议采用上述方案1 ,CUBA 对于文件存储提供了一个抽象层,这样就方便了文件存储的扩展,默认文件是存储在本地磁盘的,使用了 AWSFileStorage 扩展,可以透明地将文件迁移到AWS 的文件存储服务上。也可以自定义存储,将文件存储到阿里、百度等云服务提供商提供的文件存储服务上。

方案1.是扩展 FileDescriptorFileStorage 两个类的方案么

建议文件夹的层级关系独立维护,可以建一个新的分类实体,然后扩展 FileDescriptor 实体, 给这个实体增加一个分类属性,与分类实体关联,在文件上传后给 FileDescriptor 实例标识分类。

也可以考虑其它实现方式,主要思想是不要依赖文件的物理存储路径。

好的 ,感谢解答,需要实际操作一下。