フォームのファイル ストレージを管理する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecore Forms には、訪問者が 1 つのファイルまたは複数のファイルを Web フォームに添付できるようにするためのファイル アップロード要素が含まれています。たとえば、履歴書、アバター、プロフィール写真などです。このトピックでは、このようにしてアップロードされたファイルのストレージを管理する方法について説明します。
デフォルトでは、すべてのフォーム データは Experience Forms databaseに保存されます。Sitecore.ExperienceForms.config
ファイルで、接続文字列 Sitecore.ExperienceForms.FileStorageConnectionStringName
を確認することでデフォルト設定を表示できます。
接続文字列を使用して新しいファイル ストレージを追加する
スケーラビリティ上の理由から、フォーム フィールドからの一般的なフォーム データ用のストレージと、訪問者によってアップロードされたファイル用のストレージを分離することをお勧めします。
Sitecore Forms ファイル ストレージを別のデータベースに接続するには:
-
Sitecore.ExperienceForms.config
ファイルを開き、Sitecore.ExperienceForms.FileStorageConnectionStringName
接続文字列を使用して設定を追加します。例:
RequestResponse<setting name="Sitecore.ExperienceForms.FileStorageConnectionStringName" value=fileStorage" />
-
ConnectionStrings.config
ファイルを開き、作成した接続文字列を追加します。例:RequestResponse<add name="fileStorage" connectionString="Data Source=.;Initial Catalog=sc930xp0_FileStorage;User ID=formsuser;Password=sitecore" />
カスタム FileStorageProvider クラスを作成する
IFileStorageProvider
インターフェイスを実装することにより、別の FileStorageProvider
クラスを開発できます。
カスタムの FileStorageProvider
を作成するには:
-
独自の
FileStorageProvider
クラスを作成します。IFileStorageProvider
を拡張するには、Sitecore.ExperienceForms.Data
アセンブリに参照を追加する必要があります。RequestResponsepublic interface IFileStorageProvider { Guid StoreFile(Stream file, string fileName); StoredFile GetFile(Guid fileId); void DeleteFiles(IEnumerable<Guid> fileIds); void CommitFiles(IEnumerable<Guid> fileIds); void Cleanup(TimeSpan timeSpan); }
次の表でコマンドを説明します。
コマンド
説明
StoreFile
新しいファイルをストレージに保存します。保存されたファイルの GUID を返します。
GetFile
StoredFile
オブジェクト内のファイル情報とファイルの内容を取得します。StoredFile
クラスには以下が含まれます。RequestResponsepublic class StoredFile { public StoredFileInfo FileInfo { get; set; } public Stream File { get; set; } }
DeleteFIles
ストレージからファイルを削除します。
CommitFIles
ストレージ内のファイルをコミットします。コミットされたファイルは、クリーンアップ時に削除されません。
-
カスタマイズされたファイル プロバイダーを登録するには、
Sitecore.ExperienceForms.config
ファイルを開き、Sitecore.ExperienceForms.Data.IFileStorageProvider, Sitecore.ExperienceForms
を検索します。 -
実装タイプを
FileStorageProvider
のクラス名とアセンブリ名に置き換えます。RequestResponse<register serviceType="Sitecore.ExperienceForms.Data.IFileStorageProvider, Sitecore.ExperienceForms" implementationType="SItecore.ExperienceForms.Data.SqlServer.SqlFilestorageProvider, Sitecore.ExperienceForms.Data.SqlServer" lifetime="Transient" />
クリーンアップ タスクを計画する
Sitecore Forms は、フォームが送信されなかった場合でも、訪問者がフォーム ページ間を移動すると、アップロードされたファイルを自動的に保存します。コミットされていないファイルが保存される期間は、FileGracePeriod
設定によって決まります (デフォルトは 4 時間)。
コミットされていないファイルが保存される期間を定義するには、FileGracePeriod 設定を変更します。
-
Sitecore.ExperienceForms.config
ファイルを開き、Sitecore.ExperienceForms.FileGracePeriod
に移動します。RequestResponse<setting name="Sitecore.ExperienceForms.FileGracePeriod" value="00:04:00:00" />
クリーンアップ メカニズムが、コミットされていないファイルをクリーンアップします。デフォルトでは、クリーンアップ タスクは 24 時間に 1 回実行されます。
Forms database をクリーニングするためのコマンドとスケジュールを制御するには:
-
Master database で、sitecore/System/Tasks/ に移動します。
FileStorageCleanup
コマンドには以下のフィールドが含まれます。フィールド
説明
タイプ
クリーンアップ クラスの完全な名前とアセンブリ名。例:
Sitecore.ExperienceForms.Tasks.FileStorageCleanup,Sitecore.ExperienceForms
メソッド
メソッドの名前。例:
Execute
TaskSchedule
アイテムは、タスクがいつ実行されるかを定義します。FileStorageCleanup
スケジュール アイテムは、タスクの実行方法を定義し、以下のフィールドを含みます。フィールド
説明
コマンド
コマンドの名前。例:
Commands/Forms/FileStorageCleanup
。アイテム
メソッド実行コマンドに渡すアイテムのリストを指定します。
スケジュール
タスクのスケジュールを指定します。デフォルトでは、クリーンアップは 24 時間ごとに実行されます。例:
20190101|99990101|127|24:00:00
最後に実行した日時
タスクの前回の実行時間。デフォルトでは、Sitecore は、クリーンアップ タスクの完了後、[前回実行] フィールドを自動的に更新します。
非同期
タスクを非同期で実行する場合に選択します。
自動削除
タスクを呼び出した後、スケジュールされたアイテムを自動的に削除する場合に選択します。