Skip to content

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.COSCosConstructorcos-js-sdk-v5 构造器

环境要求

  • cos-js-sdk-v5: STS 分片上传(可选路径)
  • 应用侧已配置 OSS API(createOssSignedUploadApi)与 XHR PUT 封装

函数签名

typescript
function uploadOssFileFromBrowser(
  file: Blob,
  options: OssBrowserUploadOptions,
  deps: UploadOssFileFromBrowserDeps,
): Promise<OssBrowserUploadResult>

参数

参数名类型必填说明
fileBlob待上传文件
options.bucketstring目标桶
options.pathstring对象路径
options.contentTypestring缺省取 file.typeapplication/octet-stream
options.cacheControlstringSupabase PUT 的 cacheControl,默认 3600
options.onProgress(loaded, total) => void上传进度
depsUploadOssFileFromBrowserDeps环境依赖

返回值

类型说明
Promise<OssBrowserUploadResult>publicUrlbucketpath

工作原理

  1. 调用 tryRequestCosStsCredential;成功则走 cosSliceUploadWithSts 并返回 STS 中的 publicUrl
  2. STS 不可用时申请 signed-upload-url
  3. putHints.bodyMustBeRawFileBytes 选择 putRawSignedUploadWithProgressputSupabaseSignedUploadWithProgress
  4. 返回 publicUrlbucketpath