存储API提供基于桶的文件存储,类似于S3。上传、下载和管理文件,支持本地和S3兼容存储后端。
对于经过身份验证的函数调用:
对于管理员端点:
使用上传策略上传对象
InsForge支持两种类型的存储后端:
- 本地存储:文件存储在本地文件系统上。用于开发或低容量生产。
- S3兼容:文件存储在S3兼容对象存储上。用于高容量生产。
上传文件的步骤是:
- 获取上传策略
- 上传文件
- 确认上传(仅限S3)
第1步:获取上传策略
根据存储后端获取最优上传策略(直接或预签名URL)。
上传策略API根据存储后端返回最优上传方法:
- 本地存储:直接上传到InsForge API
- S3兼容:预签名URL用于直接上传到S3
请求正文
| 字段 | 类型 | 必需 | 说明 |
|---|
filename | string | 是 | 原始文件名 |
contentType | string | 否 | 文件的MIME类型 |
size | integer | 否 | 文件大小(字节) |
响应(S3后端)
响应(本地存储)
第2步:上传文件
使用提供的方法将文件上传到指定的URL。
- 本地存储:使用PUT请求到
uploadUrl,使用multipart/form-data和file字段。
- S3兼容:使用POST请求到
uploadUrl,使用multipart/form-data和file字段。包括请求中fields对象的所有字段。
第3步:确认预签名上传(仅限S3)
确认文件已成功使用预签名URL上传到S3。
请求正文
| 字段 | 类型 | 必需 | 说明 |
|---|
size | integer | 是 | 文件大小(字节) |
contentType | string | 否 | 文件的MIME类型 |
etag | string | 否 | 上传对象的S3 ETag |
上传对象(已弃用)
使用特定密钥将文件上传到桶。
路径参数
| 参数 | 类型 | 说明 |
|---|
bucketName | string | 桶的名称 |
objectKey | string | 对象密钥(可以包括/用于伪文件夹) |
请求正文
multipart/form-data带有file字段。
使用自动生成的密钥上传(已弃用)
使用自动生成的唯一密钥上传文件。
使用下载策略下载对象
InsForge支持两种类型的存储后端:
- 本地存储:文件存储在本地文件系统上。用于开发或低容量生产。
- S3兼容:文件存储在S3兼容对象存储上。用于高容量生产。
下载文件的步骤是:
- 获取下载策略
- 从返回的URL下载文件
第1步:获取下载策略
根据存储后端和桶可见性获取最优下载策略(直接URL或预签名URL)。
下载策略API根据存储后端和桶可见性返回最优下载方法:
- 本地存储:从InsForge API直接下载
- S3兼容:S3的预签名URL。
过期时间(用于预签名URL)从桶的
可见性自动计算服务器端。端点不需要请求正文。objectKey可能包含
/(伪文件夹)——不要百分比编码分隔符。POST /api/storage/buckets/{bucketName}/objects/{objectKey}/download-strategy
在原始路径上保留为已弃用的别名,以支持较旧的SDK
版本,将在未来的主要版本中删除。迁移到GET。
响应(S3公开桶)
响应(S3私人桶)
第2步:下载文件
使用适当的方法从返回的URL下载文件。
下载对象(已弃用)
从桶下载文件。
二进制文件内容,具有适当的Content-Type和Content-Length标头。
删除对象
从桶中删除文件。
列出桶中的对象
列出桶中的所有对象,支持可选过滤。
查询参数
| 参数 | 类型 | 说明 |
|---|
prefix | string | 按密钥前缀过滤(例如,users/) |
search | string | 按密钥搜索对象(部分匹配) |
limit | integer | 返回的最大对象数(1-1000,默认值:100) |
offset | integer | 要跳过的对象数 |
桶管理(管理员)
列出所有桶
创建桶
请求正文
| 字段 | 类型 | 必需 | 说明 |
|---|
bucketName | string | 是 | 桶名称(字母数字、下划线、连字符) |
isPublic | boolean | 否 | 桶是否可公开访问(默认值:true) |
更新桶
请求正文
| 字段 | 类型 | 必需 | 说明 |
|---|
isPublic | boolean | 是 | 桶是否可公开访问 |
删除桶
错误响应
找不到桶(404)
找不到对象(404)
无效文件(400)
桶已存在(409)