文件管理

框架提供了一套对文本,文件资源读写访问的公共操作接口。并遵这套接口规范实现了三种针对不同文件资源访问协议的服务。

服务配置

公共操作接口所能提供的方法,参见:com.halo.core.filestore.api.FileStoreService的接口文档说明。 特定的工程中只能选择一种资源访问协议,需要在filestore.properties文件中对fs.protocol进行配置。同时将fs.enabled设置为true。(详细配置项参见“配置清单”)。

服务操作

文件管理服务对外提供统一的操作方法结合,开发者代码可以通过注入特定的Spring服务来读写文件资源。

@Resource
FileStoreService fileStoreService;

该服务实例隐藏了具体的资源访问细节,面向开发者提供的是对于文本资源,文件资源的读写操作。

写操作的原子性

如果开发者要求在对文件写入时的原子性,则可以在filestore.properties配置fs.backupOnUpdate为true。这样框架会对文件写入操作进行由于的备份。保证文件写入的原子性。

读操作的优化

一些特殊的资源读取API,例如:

File getFile(String resourceId) throws ResourceAccessException

在某些特殊容器实现时,其网络特性要求服务在读取时采取一次性读取,缓存至本地后再输出。开发者需要了解这样的API在内部会一次性将文件数据读取至本地,再将文件对象返回给开发者代码的。 对于本地缓存的临时文件夹,可以在filestore.properties配置fs.tmpdir设置。

元数据

所有通过注入ResourceService实例来托管文件资源的操作,所生成的资源在容器(磁盘,MONGO)中,都会产生对应的元数据信息。这部分信息对于开发者代码来说是隐藏的。框架具有隐藏这些实现细节的内部代码, 文件资源的元数据管理不需要开发者掌握的,不过如果开发者想了解具体的元数据结构和实现细节,可以参考com.halo.core.filestore.model.StoreMetaInfo代码结构。

文件资源容器类型

框架基于FileStoreService服务接口实现了三种不同的文件资源访问协议的支持。

磁盘文件协议(file://)

参见:com.halo.core.filestore.impl.DiskStoreServiceImpl提供了对本地磁盘,NAS的访问协议。

FTP协议(ftp://)

参见:com.halo.core.filestore.impl.FtpStoreServiceImpl提供了对FTP资源的访问协议。

MONGO协议(mongo://)

参见:com.halo.core.filestore.impl.MongoStoreServiceImpl提供了对mongodb容器的文件资源访问协议。

Last updated