文件
一、本地存储
本地存储的所有文件都存储在博客运行目录下的 .nola/upload
文件夹中。
未分组的文件直接存储在 /upload
根目录下。
已经分组的文件会根据分组的地址,在 /upload
新建一个文件夹,并存放在该文件夹中。
本地存储的所有文件,可以通过 https://站点域名/upload/{文件名}
的形式直接进行访问。
二、文件表结构
1.文件表
/**
* 文件表(包括本地存储和云对象存储的文件)
*/
object Files : Table("file") {
/** 文件 ID **/
val fileId = long("file_id").autoIncrement()
/** 文件组 ID **/
val fileGroupId = long("file_group_id").nullable()
/** 文件名 **/
val displayName = varchar("display_name", 512)
/** 文件大小 **/
val size = long("size")
/** 文件存储方式 **/
val storageMode = enumerationByName("storage_mode", 48, FileStorageModeEnum::class)
/** 创建时间戳 **/
val createTime = long("create_time")
override val primaryKey = PrimaryKey(fileId)
}
2.文件存储方式表
/**
* 文件存储方式表
*/
object FileStorageModes : Table("file_storage_mode") {
/** 文件存储方式 ID **/
val fileStorageModeId = long("file_storage_mode_id").autoIncrement()
/** 文件存储方式 **/
val storageMode = enumerationByName("storage_mode", 24, FileStorageModeEnum::class)
/** 配置 **/
val config = text("config")
override val primaryKey = PrimaryKey(fileStorageModeId)
}
3.文件组表
/**
* 文件组表
*/
object FileGroups : Table("file_group") {
/** 文件组 ID **/
val fileGroupId = long("file_group_id").autoIncrement()
/** 文件组名 **/
val displayName = varchar("display_name", 128)
/** 文件组路径 **/
val path = varchar("path", 128)
/** 文件存储方式 **/
val storageMode = enumerationByName("storage_mode", 48, FileStorageModeEnum::class)
override val primaryKey = PrimaryKey(fileGroupId)
}
三、枚举类
1.文件存储方式枚举类
/**
* 文件存储方式枚举类
*/
enum class FileStorageModeEnum {
/** 本地存储 **/
LOCAL,
/** 腾讯云对象存储 **/
TENCENT_COS
}
2.文件排序方式枚举类
/**
* 文件排序枚举类
*/
enum class FileSort {
/** 创建时间降序排序 **/
CREATE_TIME_DESC,
/** 创建时间升序排序 **/
CREATE_TIME_ASC,
/** 文件大小降序排序 **/
SIZE_DESC,
/** 文件大小升序排序 **/
SIZE_ASC
}
最后修改时间: 5 个月前