フォームのファイル保存管理
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecoreフォームには、訪問者がウェブフォームに1つまたは複数のファイルを添付できるファイルアップロード要素が含まれています。例えば、履歴書、アバター、プロフィール写真などです。このトピックでは、これらのアップロードファイルの保存管理方法について説明します。
デフォルトでは、すべてのフォームデータはExperience Formsデータベースに保存されます。 Sitecore.ExperienceForms.configファイルでは、以下の接続文字列を確認することでデフォルト設定を確認できます: Sitecore.ExperienceForms.FileStorageConnectionStringName。
接続文字列を使って新しいファイルストレージを追加する
スケーラビリティの観点から、フォームフィールドから来る一般的なフォームデータのストレージと、訪問者がアップロードしたファイルのストレージを分けたいかもしれません。
Sitecore Formsのファイルストレージを別のデータベースに接続するには:
-
Sitecore.ExperienceForms.configファイルを開いて、以下の接続文字列を使って設定を追加します
.ExperienceForms.FileStorageConnectionStringName例えば:
<setting name="Sitecore.ExperienceForms.FileStorageConnectionStringName" value=fileStorage" />
-
ConnectionStrings.configファイルを開き、作成した接続文字列を追加します。例えば:
カスタムFileStorageProviderクラスを作成する
IFileStorageProviderインターフェースを実装することで、別のFileStorageProviderクラスを開発できます。
カスタムFileStorageProviderを作成するには:
-
自分だけのFileStorageProviderクラスを作成します。 IFileStorageProviderを拡張するには、Sitecore.ExperienceForms.Dataアセンブリへの参照を追加する必要があります。
public interface IFileStorageProvider
{
Guid StoreFile(Stream file, string fileName);
StoredFile GetFile(Guid fileId);
void DeleteFiles(IEnumerable
fileIds); void CommitFiles(IEnumerable
fileIds); void Cleanup(TimeSpan timeSpan);
}
以下の表はコマンドについて説明します:
- コマンド
- StoreFile。保存ファイルのGUIDを返します。
- GetFile。StoredFileクラスには以下が含まれます:
public class StoredFile { public StoredFileInfo FileInfo { get; set; } public Stream File { get; set; } }
- ファイル削除。
- コミットファイル。コミットされたファイルはクリーンアップ時に削除されません。
-
カスタマイズされたファイルプロバイダーを登録するには、Sitecore.ExperienceForms.configファイルを開き、Sitecore.ExperienceForms.Data.IFileStorageProvider, Sitecore.ExperienceFormsを検索してください。
-
実装タイプをFileStorageProviderクラス名とアセンブリ名に置き換えます。
清掃作業を計画しましょう
Sitecore Formsは、訪問者がフォームページ間を移動する際に、フォームが提出されていなくても自動的にアップロードされたファイルを保存します。未コミットファイルの保存期間はFileGracePeriod設定によって決まります(デフォルトは4時間です)。
未コミットファイルの保存期間を定義するには、FileGracePeriodの設定を変更してください:
-
Sitecore.ExperienceForms.configファイルを開いてSitecore.ExperienceForms.FileGracePeriod。
クリーンアップ機構は未コミットファイルをクリーンアップします。デフォルトでは、クリーンアップ作業は24時間ごとに1回実行されます。
フォームデータベースのクリーニングのためのコマンドやスケジュールを制御するには:
-
マスターデータベースでは、sitecore/System/Tasks/

FileStorageCleanupコマンドには以下のフィールドが含まれます:
フィールド
概要
種類
クリーンアップクラスのフルネームとアセンブリ名です。例えば: Sitecore.ExperienceForms.Tasks.FileStorageCleanup,Sitecore.ExperienceForms
方法
メソッドの名前です。例えば: Execute
TaskSchedule項目はタスクの実行時刻を定義します。FileStorageCleanupスケジュール項目はタスクの実行方法を定義し、以下のフィールドを含みます。
フィールド
概要
指揮
コマンドの名前。例えば: Commands/Forms/FileStorageCleanup。
アイテム
コマンドメソッド実行に渡すアイテムのリストを指定します。
スケジュール
タスクのスケジュールを指定してください。デフォルトでは、クリーンアップは24時間ごとに行われます: 20190101|99990101|127|24:00
最後の運行
タスクの最終実行時間です。デフォルトでは、クリーンアップタスクが完了するとSitecoreは「 最後の実行 」フィールドを自動で更新します。
非同期
タスクを非同期実行に選択します。
自動除去
タスクを呼び出した後にスケジュールされた項目を自動的に削除するオプションを選択してください。