@antelopejs/file-storage-local
单机的AntelopeJS文件存储模块. 它将文件存储接口的文件保存在本地文件系统中,并通过API模块服务签名上传并读取URL.
用于开发,并用于一个实例的部署,因为实例不共享文件。 对于若干实例,使用 @antelopejs/file-storage-s3。 。 。 .
在生产中,运行 完全一个实例并设置 storagePath 在一个持续磁盘上。 当实例睡眠,重启,或被替换时,容器的临时目录会丢失每个文件. 二审从不看第一审的档案,所以上传可以降落在一审上,确认可以降落在一审上. 在"羚羊JS"云上,在服务和点上附上一卷 storagePath 在它的山道上, 随附一卷能使服务保持在一卷. 模块无法从临时磁盘中分辨出一个持久性磁盘,因此它记录了每一次在dev模式外启动的警告.
部分 羚羊JS用于 羚羊JS 隐形物,用于您的 PostgreSQL 、 MongoDB 或 RethinkDB 数据库的开源后台.
接口
| 接口 | 文档 |
|---|---|
@antelopejs/interface-file-storage | 文件存储 |
界面页面文档上传、阅读、能见度、元数据、中继和宣传。 该模块服务于其路线通过 @antelopejs/interface-api,由 @antelopejs/api。 。 。 .
安装
ajs project modules add @antelopejs/file-storage-local
ajs project modules install
ajs project modules install 为项目导入的每个接口增加一个模块,没有模块执行。 对于 @antelopejs/interface-api,该模块是 @antelopejs/api。本模块没有默认配置,因此添加一个 config 至少带有 storagePath 财务报告和审定财务报表 baseUrl。 。 。 .
配置
import { defineConfig } from "@antelopejs/interface-core/config";
export default defineConfig({
name: "my-project",
modules: {
"file-storage-local": {
source: {
type: "package",
package: "@antelopejs/file-storage-local",
version: "^0.1.8",
},
config: {
storagePath: ".antelope/storage",
baseUrl: "${@api.API_PUBLIC_BASE_URL}",
defaultVisibility: "private",
uploadTokenExpiration: 3600,
readTokenExpiration: 60,
cleanupInterval: 300,
stagingExpiration: 86400,
storages: {
media: {
storagePath: ".antelope/media",
baseUrl: "${@api.API_PUBLIC_BASE_URL}",
defaultVisibility: "public",
},
},
},
},
},
});
| 密钥 | 默认 | 说明 |
|---|---|---|
storagePath | 所需经费 | 保存文件的文件夹 . |
baseUrl | 所需经费 | API模块的公开出处. 上传并读取 URL 开始于 <baseUrl>/file-storage/。 。 。 . |
defaultVisibility | "private" | 上传文件的可见度,没有, "public" 或者说 "private"。 。 。 . |
uploadTokenExpiration | 3600 | 上传URL的寿命, 以秒计 . |
readTokenExpiration | 60 | 私人读取 URL 的寿命 CreateReadUrl 得到没有 expiresIn数秒后. |
cleanupInterval | 300 | 中断已过期的托肯清理, 以秒计 . 0 或更少地把清理关掉. |
stagingExpiration | 无 | 设定时,清理也会删除比这多秒长的已上演的文件. 没有它, 舞台文件就留下. |
storages | 无 | 已命名的存储, 每一个都带有上面的密钥, 除非 storages。与 storage 参数. |
一个被命名的存储器会得到它漏出键的相同的默认值. 清理和清理每个仓库 cleanupInterval 财务报告和审定财务报表 stagingExpiration。 。 。 .
${@api.API_PUBLIC_BASE_URL} 是一个 配置变量 那个 @antelopejs/api 在模块密钥下发布 api。存储文件夹不得重叠,存储名称 default 预留。 模块拒绝另起炉灶.
快开始
在处理上传的模块中,添加接口:
pnpm add @antelopejs/interface-file-storage
import {
CreateReadUrl,
CreateUploadUrl,
} from "@antelopejs/interface-file-storage";
const upload = await CreateUploadUrl(
{ filename: "avatar.png", size: 52_000, mimetype: "image/png" },
{ maxSize: 1_000_000, allowedMimetypes: ["image/png", "image/jpeg"] },
);
const read = await CreateReadUrl(upload.resourceKey);
客户端发送文件 PUT upload.uploadUrl 返回时 upload.headers,然后从 read.url。 。 。 .
平台注释
- 资源密钥和使用的上传路径
/作为分离者,并停留在他们的储存中。 模块拒绝.财务报告和审定财务报表..部分. - 生成的密钥仅在扩展名有 1 到 16 个字母, 数字时保留上传文件的扩展名 ,
_,或-。 。 。 . - 模块发布带有硬链接的文件,因此存储文件夹必须在支持它们的文件系统中. 在视窗上,使用NTFS.
- 在Windows上,仅因字母大小写而不同的密钥地址是同一个文件. 模块拒绝 Windows 无法存储的片段: 保留字符、 控制字符、 后端点或空格、 设备名称等
CON或者说NUL。 。 。 .
文档
- 文件存储 文档
@antelopejs/interface-file-storage与本模块执行的合同. - 配置 包括模块来源,
config区块和配置变量antelope.config.ts。 。 。 .
兼容性
| 软件包 | 支助 | 测试过 |
|---|---|---|
@antelopejs/interface-api | >=0.0.16 <1.0.0 | 0.0.16 |
@antelopejs/interface-core | >=0.4.0 <1.0.0 | 0.4.0 |
@antelopejs/interface-file-storage | >=0.1.6 <0.2.0 | 0.1.6 |
CI在Linux和Windows上运行测试,由Node.js发布 .nvmrc 名称.
捐款
pnpm install
pnpm lint
pnpm format:check
pnpm knip
pnpm test # build, then ajs module test
测试还管理着共用的兼容套件,包括: @antelopejs/interface-file-storage。阅读 捐款准则 在打开拉出请求之前.