一括ZIPダウンロード
import { Image } from ‘astro:assets’; import downloadAll from ’../../../../assets/screenshots/download-all-zip.png’;
レコードに添付されたすべてのファイルを1つのZIPアーカイブとしてダウンロードできます。ファイルが1件以上存在する場合、コンポーネントの上部にDownload All Filesリンクが表示されます。
Smarter Filesはファイルの合計サイズに応じて最適な方法を自動選択します:
- 小さなバッチ(デフォルト:合計約50MB未満) は、ブラウザ上でJSZipを使用してクライアント側でZIP化されます。ZIPはユーザーのマシン上で生成・ダウンロードされ、サーバー側の処理は不要です。
- 大きなバッチ は、Salesforceのファイルサーブレットを通じてファイルをストリーミングすることでサーバー側でZIP化されます。これにより標準の12MBのApexヒープ制限を回避し、アーカイブのサイズに実質的な上限がありません。
どちらの方法が使用されるかに関わらず、ユーザーには単一の「Download All」ボタンが表示され、コンポーネントが自動的に判断します。
表示フィルタリング
Section titled “表示フィルタリング”ZIPに含まれるのは、ユーザーが閲覧可能なファイルのみです。以下の理由で制限されたファイルは除外されます:
- 表示カテゴリルール(ユーザーのロールが許可リストにない)、または
- プライベートフラグ(別のユーザーが設定し、現在のユーザーに
View Private Documents権限がない)
これらのファイルはバンドル作成前にサーバー側でフィルタリングされます — ユーザーがファイルの存在を知っていても、アーカイブには含まれません。
エラー時の動作
Section titled “エラー時の動作”個別ファイルのダウンロードが失敗した場合(破損、取得とZIP化の間に削除、権限が途中で取り消されたなど)、残りのファイルでZIPが生成され、スキップされたファイルをユーザーに知らせるトースト通知が表示されます。1件のファイルの問題によってDownload All操作全体が中止されることはありません。
パフォーマンスに関する注意
Section titled “パフォーマンスに関する注意”- ZIP生成は非同期で実行されます — ユーザーは別のページに移動してもダウンロードは完了します。
- 数百件のファイルがあるレコードでは、最初のクリックで待ち時間が発生することがあります。同じレコードの2回目以降のダウンロードはファイルのメタデータがキャッシュされるため速くなります。