Madogiwa Blog

主に技術系の学習メモに使っていきます。

javascript: ファイルダウンロード処理を実装するMEMO

最近MarkdownEditorのサービスを作っていて、作成したMarkdownファイルをjavascriptでダウンロード処理を実装したので、 やり方をMEMOしておきますφ(・

やったこと

私のサービスではMarkdownファイルをダウンロードする機能を作りたかったので、 propsで受け取ったitemの本文(markdownText)とタイトル(title)を使ってファイルを生成し、 ダウンロード出来るVueコンポーネントを作りました👀

実際のコード

実装の流れは下記の通りです🙌

  1. 引数のitemの本文を元にBlobインスタンスを作成
  2. リンク要素aを作成
  3. リンクのhrefBlobインスタンスのダウンロードURLを設定
  4. リンクのdownloadにitemのタイトルを元にファイル名を設定
  5. リンクをクリックしてダウンロードを実行

↓実際のVueコンポーネントはこちらです↓

<template>
  <i
    class="fas fa-file-download download"
    @click="handleOnDownload($event, item)"
  />
</template>
<script>
export default {
  name: 'DownloadLink',
  components: {},
  props: ['item'],
  methods: {
    handleOnDownload: function(e, item) {
      e.preventDefault()
      const blob = new Blob([item.markdownText], { 'type' : 'text/plain' })
      let link = document.createElement('a')
      link.href = window.URL.createObjectURL(blob)
      link.download = `${item.title}.md`
      link.click()
    }
  }
}
</script>

javascriptでファイルダウンロードするときは、ダウンロードリンクを動的に生成して、それをクリックするような流れ行うんですねー🤔

multi-tab-markdown/DownloadLink.vue at master · Madogiwa0124/multi-tab-markdown · GitHub

参考

www.tagindex.com

helloworld-blog.tech