Skip to content

downloadInBrowserResolved

Web 下载增强:有文件名且为 http(s) 时先 fetch 为 blob 再 a[download],避免 window.open 被拦截。

前置依赖

依赖参数

参数名类型说明
deps.fetchFetchFunction拉取远程文件
deps.createObjectURL(blob) => string创建 blob URL
deps.revokeObjectURL(url) => void释放 blob URL
deps.setTimeouttypeof setTimeout延迟 revoke
以及 downloadInBrowser 的 DOM 依赖

函数签名

typescript
function downloadInBrowserResolved(
  options: DownloadOptions,
  deps: DownloadInBrowserResolvedDeps,
): Promise<DownloadResult>

参数

参数名类型必填说明
optionsDownloadOptionsdownloadInBrowser
depsDownloadInBrowserResolvedDepsfetch + DOM 依赖

返回值

类型说明
Promise<DownloadResult>下载结果

工作原理

  1. 有文件名且 URL 为 http(s) 且非 window 模式时,先 fetchblobtriggerAnchorDownload
  2. fetch 失败(如 CORS)时回退 downloadInBrowser
  3. 成功后延迟 60s revokeObjectURL