飞行仓库
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 的文件系统抽象。 这带来了过来 十年的文件系统抽象经验.