コンテンツにスキップ

一括ZIPダウンロード

import { Image } from ‘astro:assets’; import downloadAll from ’../../../../assets/screenshots/download-all-zip.png’;

レコードに添付されたすべてのファイルを1つのZIPアーカイブとしてダウンロードできます。ファイルが1件以上存在する場合、コンポーネントの上部にDownload All Filesリンクが表示されます。

ダウンロード中のFilesコンポーネント。スピナーとともにDownload Allが表示されています

Smarter Filesはファイルの合計サイズに応じて最適な方法を自動選択します:

  • 小さなバッチ(デフォルト:合計約50MB未満) は、ブラウザ上でJSZipを使用してクライアント側でZIP化されます。ZIPはユーザーのマシン上で生成・ダウンロードされ、サーバー側の処理は不要です。
  • 大きなバッチ は、Salesforceのファイルサーブレットを通じてファイルをストリーミングすることでサーバー側でZIP化されます。これにより標準の12MBのApexヒープ制限を回避し、アーカイブのサイズに実質的な上限がありません。

どちらの方法が使用されるかに関わらず、ユーザーには単一の「Download All」ボタンが表示され、コンポーネントが自動的に判断します。

ZIPに含まれるのは、ユーザーが閲覧可能なファイルのみです。以下の理由で制限されたファイルは除外されます:

  • 表示カテゴリルール(ユーザーのロールが許可リストにない)、または
  • プライベートフラグ(別のユーザーが設定し、現在のユーザーに View Private Documents 権限がない)

これらのファイルはバンドル作成前にサーバー側でフィルタリングされます — ユーザーがファイルの存在を知っていても、アーカイブには含まれません。

個別ファイルのダウンロードが失敗した場合(破損、取得とZIP化の間に削除、権限が途中で取り消されたなど)、残りのファイルでZIPが生成され、スキップされたファイルをユーザーに知らせるトースト通知が表示されます。1件のファイルの問題によってDownload All操作全体が中止されることはありません。

  • ZIP生成は非同期で実行されます — ユーザーは別のページに移動してもダウンロードは完了します。
  • 数百件のファイルがあるレコードでは、最初のクリックで待ち時間が発生することがあります。同じレコードの2回目以降のダウンロードはファイルのメタデータがキャッシュされるため速くなります。