@aligov/gov-spread

Download with async generation

Usage no npm install needed!

<script type="module">
  import aligovGovSpread from 'https://cdn.skypack.dev/@aligov/gov-spread';
</script>

README

Download

npm publish 失败,暂时没找到原因,先使用 @alife 发布到 tnpm

后续发布到 npm 需要修改为 @aligov/download,包括 demo 以及 package.json

@aligov/gov-spread

下载按钮,支持两种形式:

  • 传入 url,点击后直接下载(新标签页打开)
  • 先创建文件生成任务,然后轮询任务直到生成下载链接、失败或超过轮询次数限制。

API

直接展示的是一个基于 @alifd/nextButton 的按钮,除了后面罗列的参数外,其它额外参数将作为 Button 的属性。

直接下载

直接下载是指点击后就新标签页打开给定的地址,当 props.url 存在时就进入此模式。

参数名 说明 必填 类型 默认值 备注
url 文件访问地址 Y string 直接下载模式下必填

异步生成

当无 props.url 时,进入先创建文件生成任务,然后轮询获取文件下载链接的模式。

参数名 说明 必填 类型 默认值 备注
createService 创建文件生成任务 Y () => Promise<ITaskId> 返回任务 id
pollingService 轮询任务 Y (taskId: ITaskId) => Promise<IPollingResult>
maxPollingTimes 最大轮询次数 N number 60
pollingInterval 轮询时间间隔,单位毫秒 N number 1000
autoDownload 轮询成功后是否自动下载 N boolean false
dialogTitle dialog title N ReactNode
onOk 文件地址生成后回调 N (url: string) => void

其中,

type ITaskId = number | string

interface IPollingResult {
    status: 'init' | 'running' | 'done' | 'failed';
    payload?: string;
}