logo
0
1
WeChat Login
yunfan<jyf1987@gmail.com>
补充七牛 STS 权限经验文档

Qiniu OSS Library

纯净的 TypeScript + Bun 七牛云对象存储库,代码放在 src/provider/qiniu

能力

  • 上传对象 putObject
  • 读取元数据 headObject
  • 下载对象 getObject
  • 列表查询 listObjects
  • 删除对象 deleteObject
  • 复制对象 copyObject
  • 移动对象 moveObject
  • 私有下载签名 signDownloadUrl
  • 上传凭证 createUploadToken
  • 管理接口签名示例 statObject

环境变量

export QINIU_ACCESS_KEY="xxx"
export QINIU_SECRET_KEY="xxx"
export QINIU_BUCKET="your-bucket"
export QINIU_REGION="cn-south-1"
export QINIU_PUBLIC_DOMAIN="cdn.example.com"
export QINIU_PATH_PREFIX="demo/assets"
export QINIU_USE_HTTPS="true"

安装

bun install

类型检查

bun run check

启动 TUI 演示

bun run dev:tui

这是一个全屏文件管理式 TUI,不是数字菜单。

  • 宽终端:双栏显示,左侧列表,右侧详情
  • 窄终端:自动切成单栏,优先保证列表可见

快捷键

  • ↑/↓j/k:移动选择
  • Enter:进入目录,或预览文件
  • Backspaceh:返回上级目录
  • g:回到根目录
  • u:刷新
  • n:新建文本文件
  • U:打开本地文件选择器,选中文件后上传到当前目录
  • m:新建目录
  • e:编辑当前文件内容
  • r:重命名 / 移动
  • c:复制
  • d:删除
  • i:查看对象信息
  • s:查看当前浏览会话信息。TUI 启动时会先申请一个前缀级 STS 临时令牌,后续浏览/预览/上传都直接使用它
  • q:退出

最小调用示例

import { createQiniuOssClient, readQiniuConfigFromEnv } from "./src/provider/qiniu";

const client = createQiniuOssClient(readQiniuConfigFromEnv());

const uploaded = await client.putObject({
  key: "hello.txt",
  body: "hello qiniu",
  contentType: "text/plain",
});

console.log(uploaded.url);
console.log(client.signDownloadUrl({ key: "hello.txt", expiresInSeconds: 600 }));

About

对qiniu的存储的研究 主要是为了方便自己和agent

Language
TypeScript100%