JavaScript
MP3
axios

jpgやmp3をブラウザで開かずにダウンロード(ファイル保存)させるJavaScript

着地シンプルだったけどドハマりしたのでメモしておく。

  • ファイル保存はHTML5の <a href="" download=""></a> でも一見できそうだが、jpgやmp3はブラウザ上で開いてしまうのでNG
  • HTML5の saveAs() は各ブラウザ対応が違いすぎて死んだのでFileSaverというライブラリに任せたかった
  • MINE_TYPEの指定不要っぽい?(ファイル形式によっては必須かもしれない)
  • 対象ファイルをURL経由で取得する際、axiosの場合はresponseType: 'blob'が必須だった
// ES2015
import axios from 'axios'
import FileSaver from 'file-saver'

return axios.get('https://hogefuga.com/input_filename.mp3', {responseType: 'blob'})
  .then((res)=>{
    const blob = res.data
    FileSaver.saveAs(blob, 'download_filename.mp3')
  })