Utilities
Download trigger

Download Trigger

Trigger file downloads programmatically.

Motivation

The DownloadTrigger component provides a convenient way to programmatically trigger file downloads in web applications. It handles the complexities of downloading files, whether they are URLs, Blobs, or other data types.

Examples

Basic

Pass the data you want to download to the data prop, and specify the fileName and mimeType of the file.

<script setup lang="ts">
import { DownloadTrigger } from '@ark-ui/vue/download-trigger'
</script>

<template>
  <DownloadTrigger data="Hello world" fileName="hello.txt" mimeType="text/plain">Download txt</DownloadTrigger>
</template>

Download SVG

Here's an example of how to download an SVG file.

<script setup lang="ts">
import { DownloadTrigger } from '@ark-ui/vue/download-trigger'
</script>

<template>
  <DownloadTrigger
    data='<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"><circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red"/></svg>'
    fileName="circle.svg"
    mimeType="image/svg+xml"
  >
    Download SVG
  </DownloadTrigger>
</template>

Promise

You can also trigger downloads from a promise that returns a Blob, File, or string.

<script setup lang="ts">
import { DownloadTrigger } from '@ark-ui/vue/download-trigger'

const fetchImage = async () => {
  const response = await fetch('https://picsum.photos/200/300')
  return response.blob()
}
</script>

<template>
  <DownloadTrigger :data="fetchImage" fileName="random-image.jpg" mimeType="image/jpeg">Download Image</DownloadTrigger>
</template>

API Reference