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.type 或 application/octet-stream
options.cacheControlstring否Supabase PUT 的 cacheControl,默认 3600
options.onProgress(loaded, total) => void否上传进度
depsUploadOssFileFromBrowserDeps是环境依赖

返回值 ​

类型说明
Promise<OssBrowserUploadResult>publicUrl、bucket、path

工作原理 ​

  1. 调用 tryRequestCosStsCredential;成功则走 cosSliceUploadWithSts 并返回 STS 中的 publicUrl。
  2. STS 不可用时申请 signed-upload-url。
  3. 按 putHints.bodyMustBeRawFileBytes 选择 putRawSignedUploadWithProgress 或 putSupabaseSignedUploadWithProgress。
  4. 返回 publicUrl、bucket、path。