2sxc 모듈에서 ADAM으로 업로드 된 파일을 엔티티 필드에 올바르게 바인딩하는 방법은 무엇입니까?

Nov 24 2020

프로그래밍 방식으로 엔터티 개체를 만들고 데이터로 채워야합니다. 한 필드는 파일 유형이어야합니다. 그래서 파일없이 엔티티를 만들고이 코드 샘플을 사용하여 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_

BTW : MobiusForms를 확인하여 어떻게 수행되는지 확인하십시오.

그리고 언급하는 것을 잊었습니다. 여기 문서 https://docs.2sxc.org/web-api/custom-web-api-dotnet-saveinadam.html

추가 설명 :

  1. SaveInAdam은 항목의 ADAM 폴더에 파일을 배치합니다. 많은 파일이 추가 될 수 있기 때문에 필드가 라이브러리 유형이라고 가정하고 엔티티에 아무것도 저장하지 않고 필드에 속한 폴더를 자동으로 찾습니다.
  2. 라이브러리 기능을 사용하지 않고 실제로 링크가있는 단일 필드 만 사용하려는 경우 필드 값에 "file : 74"와 같은 용어도 저장해야합니다.