Static Bucket File 静态文件服务(文件操作)
static-bucket-file 命名空间负责操作某个 Bucket 内的具体文件,包括上传、读取、删除、重命名和列出文件。
与 Bucket 配置分离
本命名空间不修改 Bucket 配置(如 is_http_root、cors)。Bucket 配置的 CRUD 操作在 static-bucket 命名空间中完成。
权限结构
- Scope:
StaticBucket(name)或GlobalStaticBucket(name):只对该 bucket 生效Global:对所有 bucket 生效(可用*通配)
- Permission:
StaticBucketFile::Read— 读取文件内容 (read)StaticBucketFile::Write— 上传文件 (upload)StaticBucketFile::Delete— 删除文件 (delete)StaticBucketFile::List— 列出文件 (list)
为什么 List 是独立权限?
文件列表操作只暴露目录结构(文件名、大小、修改时间),不暴露文件内容。将 List 与 Read 分离,可以授予"看得见目录"但不"读得了内容"的权限粒度。
方法概览
| 方法名 | 功能 | 所需权限 |
|---|---|---|
| static-bucket-file_upload | 上传文件 | StaticBucketFile::Write |
| static-bucket-file_read | 读取文件(base64 返回) | StaticBucketFile::Read |
| static-bucket-file_delete | 删除文件 | StaticBucketFile::Delete |
| static-bucket-file_rename | 重命名 / 移动文件 | StaticBucketFile::Write + StaticBucketFile::Delete |
| static-bucket-file_list | 列出目录下所有文件 | StaticBucketFile::List |
HTTP 访问静态文件
默认路由
GET /nodeget/static/{name}/{*path}访问示例:
bash
curl http://localhost:3000/nodeget/static/my-site/index.html当 cors: true 时,响应头会携带:
Access-Control-Allow-Origin: *同时支持 OPTIONS 预检请求,返回 204 No Content 和对应的 CORS 头。
根路由代理(is_http_root)
当某条 Bucket 配置的 is_http_root 为 true 时:
- 服务器的根路由
/和所有未匹配路由会直接返回该静态目录下的文件 WebSocket(/terminal)和JSON-RPC不受影响- 未绑定
is_http_root时,根路由继续返回默认的占位 HTML
示例:
bash
curl http://localhost:3000/index.html
# 实际返回磁盘上 {static_path}/{path}/index.html 的内容(path 为该 bucket 记录里的 path 字段)注意事项
- 文件
path参数严格禁止目录遍历(..和绝对路径会被拒绝) body与base64不能同时出现,否则返回InvalidInput- 所有文件路径都经过
resolve_safe_file_path双重校验,拒绝..穿透、绝对路径、反斜杠、Windows 盘符等
