uploadOssFileFromBrowser
浏览器直传 OSS:优先 COS STS 分片;否则 signed-upload-url(原始 PUT / Supabase FormData PUT)。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.tryRequestCosStsCredential | (body) => Promise<Payload | null> | 申请 COS STS |
deps.requestOssSignedUploadUrl | (body) => Promise<Payload> | 申请 signed-upload-url |
deps.putRawSignedUploadWithProgress | (url, file, type, onProgress?) => Promise<void> | 原始字节 PUT |
deps.putSupabaseSignedUploadWithProgress | (url, file, options) => Promise<void> | Supabase FormData PUT |
deps.COS | CosConstructor | cos-js-sdk-v5 构造器 |
环境要求
- cos-js-sdk-v5: STS 分片上传(可选路径)
- 应用侧已配置 OSS API(
createOssSignedUploadApi)与 XHR PUT 封装
函数签名
typescript
function uploadOssFileFromBrowser(
file: Blob,
options: OssBrowserUploadOptions,
deps: UploadOssFileFromBrowserDeps,
): Promise<OssBrowserUploadResult>参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | Blob | 是 | 待上传文件 |
options.bucket | string | 是 | 目标桶 |
options.path | string | 是 | 对象路径 |
options.contentType | string | 否 | 缺省取 file.type 或 application/octet-stream |
options.cacheControl | string | 否 | Supabase PUT 的 cacheControl,默认 3600 |
options.onProgress | (loaded, total) => void | 否 | 上传进度 |
deps | UploadOssFileFromBrowserDeps | 是 | 环境依赖 |
返回值
| 类型 | 说明 |
|---|---|
Promise<OssBrowserUploadResult> | publicUrl、bucket、path |
工作原理
- 调用
tryRequestCosStsCredential;成功则走cosSliceUploadWithSts并返回 STS 中的publicUrl。 - STS 不可用时申请
signed-upload-url。 - 按
putHints.bodyMustBeRawFileBytes选择putRawSignedUploadWithProgress或putSupabaseSignedUploadWithProgress。 - 返回
publicUrl、bucket、path。