アップロードされたファイルをADAMで2sxcモジュールのエンティティフィールドに正しくバインドするにはどうすればよいですか?

Nov 24 2020

プログラムでエンティティオブジェクトを作成し、データを入力する必要があります。1つのフィールドはファイルタイプである必要があります。そのため、ファイルなしでエンティティを作成し、このコードサンプルを使用してADAMにファイルをアップロードすることができました。ただし、ファイルを手動でアップロードするとバインドされるため、バインドしなかったようです。ファイルをエンティティフィールドに手動でアップロードすると、のようなコンテンツが表示されますfile:421 .../asdf.docx。ただし、上記のリンクからコードサンプルを繰り返すと、フィールドには選択可能なファイルが含まれており、すでにアップロードされていますが、フィールド値はnullです。メソッドIFile.Urlを介して正しいデータを書き込んでいるようですがApp.Data.Update、管理パネルにIDが表示されていません。

Dictionary<string, object> fileDict = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase) {
        { "File", file.Url }
    }; // file is ToSic.Sxc.Adam.IFile, returned by SaveInAdam

App.Data.Update(entityObj.EntityId, fileDict); // entityObj is ToSic.Eav.Data.IEntity, returned by App.Data.Create

手動アップロードのようなバインディングがない場合、それはいくつかの悪い結果をもたらすのだろうか、そしてそれを正しく行う方法は?

回答

1 iJungleBoy Dec 07 2020 at 00:00

ファイルを追加するには、実際にファイルをフィールドに追加します(これにより、UIは、通常のユーザーによって追加されたかのようにファイルを提供できます)。チェックアウトhttps://docs.2sxc.org/api/dot-net/ToSic.Sxc.Dnn.Web.IDynamicWebApi.html#ToSic_Sxc_Dnn_Web_IDynamicWebApi_SaveInAdam_System_String_System_IO_Stream_System_String_System_String_System_Nullable_System_Guid__System_String_System_String_

ところで:MobiusFormsをチェックして、それがどのように行われるかを確認することをお勧めします。

そして私は言及するのを忘れました:ここにドキュメントがあります https://docs.2sxc.org/web-api/custom-web-api-dotnet-saveinadam.html

さらに説明するには:

  1. SaveInAdamは、ファイルをアイテムのADAMフォルダーに配置します。多くのファイルが追加される可能性があるため、フィールドがライブラリタイプであると想定しているだけです。これはエンティティに何も格納せず、フィールドに属するフォルダを自動的に検出します。
  2. ライブラリ機能を使用せず、実際にはリンク付きの単一フィールドのみを使用する場合は、「file:74」などの用語もフィールドの値に保存する必要があります。