1. Sitecoreフォーム

フォームのファイルストレージを管理する

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecore Formsには、訪問者が1つまたは複数のファイルをWebフォームに添付できるようにするために使用できるファイル アップロード要素が含まれています。たとえば、履歴書、アバター、プロフィール写真などです。このトピックでは、これらのアップロードされたファイルのストレージを管理する方法について説明します。

デフォルトでは、すべてのフォームデータはExperience Formsデータベースに保存されます。 Sitecore.ExperienceForms.configファイルでは、接続文字列Sitecore.ExperienceForms.FileStorageConnectionStringNameを確認することで、デフォルト設定を表示できます。

接続文字列を使用して新しいファイルストレージを追加する

スケーラビリティ上の理由から、フォームフィールドからの一般的なフォームデータのストレージと、訪問者がアップロードしたファイルのストレージを分離することができます。

Sitecore Formsファイル ストレージを別のデータベースに接続するには、次の手順に従います。

  1. Sitecore.ExperienceForms.configファイルを開き、次の接続文字列を使用して設定を追加します。Sitecore.ExperienceForms.FileStorageConnectionStringName

    例えば:

    <setting name="Sitecore.ExperienceForms.FileStorageConnectionStringName" value=fileStorage" />
  2. ConnectionStrings.configファイルを開き、作成した接続文字列を追加します。例えば:

    <add name="fileStorage" connectionString="Data Source=.;Initial Catalog=sc930xp0_FileStorage;User ID=formsuser;Password=sitecore" />

カスタムのFileStorageProviderクラスを作成する

IFileStorageProviderインターフェイスを実装することで、別のFileStorageProviderクラスを開発できます。

カスタムFileStorageProviderを作成するには:

  1. 独自のFileStorageProviderクラスを作成します。 IFileStorageProviderを拡張するには、Sitecore.ExperienceForms.Dataアセンブリへの参照を追加する必要があります。

    public 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);
    
        }
    

    次の表では、コマンドについて説明します。

    命令

    形容

    ストアファイル

    新しいファイルをストレージに保存します。格納されたファイルのGUIDを返します。

    GetFile(ゲットファイル)

    StoredFileオブジェクト内のファイル情報とファイル内容を取得します。StoredFileクラスには、次のものが含まれます。

    public class StoredFile
        { 
            public StoredFileInfo FileInfo { get; set; }
            public Stream File { get; set; }
    }

    削除ファイル

    ストレージからファイルを削除します。

    コミットファイル

    ストレージ内のファイルをコミットします。コミットされたファイルは、クリーンアップ中に削除されません。

  2. カスタマイズしたファイルプロバイダを登録するには、Sitecore.ExperienceForms.configファイルを開き、Sitecore.ExperienceForms.Data.IFileStorageProvider, Sitecore.ExperienceFormsを検索します。

  3. 実装の種類を、実際のFileStorageProviderクラス名とアセンブリ名に置き換えます。

    <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に進みます。

    <setting name="Sitecore.ExperienceForms.FileGracePeriod" value="00:04:00:00" />

クリーンアップ・メカニズムは、コミットされていないファイルをクリーンアップします。デフォルトでは、クリーンアップ タスクは24時間ごとに実行されます。

Formsデータベースのクリーニングのコマンドとスケジュールを制御するには、次のようにします。

  • Masterデータベースで、sitecore/System/Tasks/

    File storage clean up task for Sitecore Forms

    FileStorageCleanupコマンドには、次のフィールドが含まれています。

    形容

    種類

    クリーンアップ クラスの完全な名前とアセンブリ名。例えば: Sitecore.ExperienceForms.Tasks.FileStorageCleanup,Sitecore.ExperienceForms

    方式

    メソッドの名前。例えば: Execute

    TaskSchedule項目は、タスクがいつ実行されるかを定義します。FileStorageCleanupスケジュール項目は、タスクの実行方法を定義し、次のフィールドを含みます。

    形容

    命令

    コマンドの名前。たとえば、Commands/Forms/FileStorageCleanupのようになります。

    項目

    コマンドメソッドの実行に渡す項目のリストを指定します。

    計画

    タスクのスケジュールを指定します。デフォルトでは、クリーンアップは24時間ごとに実行されます。 20190101|99990101|127|24:00:00

    最後の実行

    タスクの最終実行時間。デフォルトでは、Sitecoreはクリーンアップ タスクの完了後にLast Runフィールドを自動的に更新します。

    非同期

    タスクを非同期的に実行する場合に選択します。

    自動削除

    タスクの呼び出し後にスケジュールされたアイテムを自動的に削除する場合に選択します。

この記事を改善するための提案がある場合は、 お知らせください!