@flystorage/file-storage

中文文档
1.2.2发布于 2026/01/24MITTypeScriptESM + CJS零依赖近 30 天下载 8.9万

文件存储抽象:多文件系统,一个API.

中文使用文档
文档目录6 节
  1. 飞行场是什么
  2. 能力
  3. 适配器
  4. 使用量
  5. 本地用户
  6. 作者

飞行仓库

Flystorage是用于NodeJS和TypeScript的文件存储抽象. 这是一个80/20的解决方案 围绕一系列目标:

  • 提供易于使用的直向API.
  • 允许应用程序代码未知文件存储位置 .
  • 实际平滑地克服潜在的存储差异.
  • 展示一个Aync/await基于API, 承诺一路.
  • 文件权限摘要使用"可视性".
  • 实际测试 通过真正的整合, 嘲笑是不欢迎的。 。 。 .
  • 站在巨人的肩上,尽可能使用官方的供应商包.

飞行场是什么

Flystorage是用于通用文件存储用例的情况. 这不是API的 任何特定文件系统。 这是一个通用的解决方案,不会只执行特性 特定存储执行。 会有没有满足的用具 仅仅因为不能以合理的方式加以抽象.

能力

  • 使用字符串 QQ 缓冲 QQ 可读/ 流写入文件
  • 将文件读取为流、 字符串或 Uint8Array
  • 列出目录/前缀的内容,(shallow and deep).
  • 元数据,例如; mime-类型, 上次修改的时间戳, 文件大小 .
  • 显示或计算文件的校验和 .
  • 在文件不存在时删除不失败的文件 .
  • 使用抽象可见度设定权限
  • 删除目录( 及其包含的任何文件)
  • 生成公共 URL .
  • 生成临时( 已签名) URL .
  • 从浏览器上安全直接上传.
  • 移动文件
  • 复制文件

适配器

使用量

安装主软件包和可能需要的任何适配器:

npm i -S @flystorage/file-storage

# for using AWS S3
npm i -S @flystorage/aws-s3

# for using the local filesystem
npm i -S @flystorage/local-fs

本地用户

import {resolve} from 'node:path';
import {createReadStream} from 'node:fs';
import {FileStorage, Visibility} from '@flystorage/file-storage';
import {LocalStorageAdapter} from '@flystorage/local-fs';

/**
 * SETUP
 **/

const rootDirectory = resolve(process.cwd(), 'my-files');
const storage = new FileStorage(new LocalStorageAdapter(rootDirectory));

/**
 * USAGE
 **/

// Write using a string
await storage.write('write-from-a-string.txt', 'file contents');

// Write using a stream
const stream = createReadStream(resolve(process.cwd(), 'test-files/picture.png'));
await storage.write('picture.png', stream);

// Write with visibility (permissions).
await storage.write('public.txt', 'debug', {
    visibility: Visibility.PUBLIC, // mode: 0o644
});
await storage.write('private.txt', 'debug', {
    visibility: Visibility.PRIVATE, // mode: 0o600
});

// List directory contents
const contentsAsAsyncGenerator = storage.list('', {deep: true});

for await (const item of contentsAsAsyncGenerator) {
    console.log(item.path);

    if (item.isFile) {
        // do something with the file
    } else if (item.isDirectory) {
        // do something with the directory
    }
}

// Delete a file
await storage.deleteFile('some-file.txt');

// Delete a directory (with all contents)
await storage.deleteDirectory('some-directory');

作者

Flystorage由维护者建造 飞行系统页:1 pHP 的文件系统抽象。 这带来了过来 十年的文件系统抽象经验.

版本与发布记录

@flystorage/file-storage 共发布 22 个版本,首次发布于 2023/11/30;过去 12 个月发布了 2 个版本。

版本发布日期距今
1.2.2latest2026/01/249 个月前
1.2.12025/11/2911 个月前
1.2.02025/09/131.2 年前
1.1.02025/05/131.5 年前
1.0.12025/01/141.8 年前
1.0.02024/12/121.9 年前

关于 @flystorage/file-storage 的常见问题

@flystorage/file-storage 是什么?

文件存储抽象:多文件系统,一个API.

如何安装 @flystorage/file-storage?

在项目目录运行 npm install @flystorage/file-storage,或使用 pnpm add / yarn add / bun add。

@flystorage/file-storage 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@flystorage/file-storage 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@flystorage/file-storage 可以商用吗?

@flystorage/file-storage 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@flystorage/file-storage 的下载量有多少?

根据 npm 官方下载统计,@flystorage/file-storage 在 2026/10/15 – 2026/11/13 这 30 天内被下载 89,091 次,日均约 2,970 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@flystorage/file-storage 还在维护吗?

最新版本 1.2.2 发布于 2026/01/24(9 个月前);至今共发布 22 个版本,其中过去 12 个月发布了 2 个;首次发布于 2023/11/30。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。