他の回答のいくつかに従って、間違いなく window.fetch とdownload.jsを使用してファイルをダウンロードできます。ただし、window.fetch を blob で使用すると、ブラウザによって課されるメモリの制限があり、download.js にも互換性の制限があります。
大きなサイズのファイルをダウンロードする必要がある場合、それをクライアント側のメモリに入れてブラウザに負荷をかけたくありませんよね? 代わりに、ストリーム経由でダウンロードすることをお勧めします。このような場合、HTML リンクを使用してファイルをダウンロードすることは、特にストリームを介して大きなサイズのファイルをダウンロードする場合に、最良/最も簡単な方法の 1 つです。
ステップ 1:リンク要素を作成してスタイルを設定する
リンクを非表示にできますが、アクション可能です。
HTML:
<a href="#" class="download-link" download>Download</a>
CSS:
.download-link {
position: absolute;
top: -9999px;
left: -9999px;
opacity: 0;
}
ステップ 2:href
リンクの設定とclick
イベントのトリガー
JavaScript
let url = `https://www.googleapis.com/drive/v2/files/${fileId}?alt=media`;
const downloadLink = document.querySelector('.download-link')
downloadLink.href = url + '&ts=' + new Date().getTime() // Prevent cache
downloadLink.click()
注:
- 必要に応じて、リンク要素を動的に生成できます。
- このアプローチは、サーバー側で動的に生成される大きなサイズのファイルをストリーム経由でダウンロードする場合に特に便利です。