现在就是想实现以下类似网盘的功能,就是在前端显示文件夹层级关系之类的,然后对应的就是CUBA实际存储的路径,现在在获取路径上遇到了点问题,请问有没有什么好一点的解决方案推荐
可以先看看 cuba 标准文件存储 通过应用程序属性 cuba.fileStorageDir
配置文件存储位置。
但是标准的文件存储是按照年月日分子目录的,可能与你想实现的云盘功能不一致。如需实现自己的分目录存储,可以:
-
扩展系统的
FileDescriptor
加入自定义属性,比如部门、类型,甚至提供 path 属性可以用来配置存储路径。 -
扩展 系统的
FileStorage
类,重写getStorageDir
方法,根据FileDescriptor
中的新加属性确定文件的存放目录。
所以,如果是使用 CUBA 的标准文件存储,只要获取 FileDescriptor.createDate
然后根据年月日计算出存储路径。如果是使用自定义的文件存储,按照 FileDescriptor 的新增自定义属性计算就可以。
好的,去研究一下。谢谢
建议采用上述方案1 ,CUBA 对于文件存储提供了一个抽象层,这样就方便了文件存储的扩展,默认文件是存储在本地磁盘的,使用了 AWSFileStorage 扩展,可以透明地将文件迁移到AWS 的文件存储服务上。也可以自定义存储,将文件存储到阿里、百度等云服务提供商提供的文件存储服务上。
方案1.是扩展 FileDescriptor
与 FileStorage
两个类的方案么
建议文件夹的层级关系独立维护,可以建一个新的分类实体,然后扩展 FileDescriptor
实体, 给这个实体增加一个分类属性,与分类实体关联,在文件上传后给 FileDescriptor
实例标识分类。
也可以考虑其它实现方式,主要思想是不要依赖文件的物理存储路径。
好的 ,感谢解答,需要实际操作一下。