Jak poprawnie powiązać przesłany plik z ADAMem z polem encji w module 2sxc?
Muszę programowo utworzyć obiekt jednostki i wypełnić go danymi. Jedno pole musi być typu pliku. Udało mi się więc stworzyć encję bez pliku, załadować plik w ADAMie używając tego przykładowego kodu . Wygląda jednak na to, że nie związałem go, ponieważ jest on związany, gdy plik jest ładowany ręcznie. Gdy plik jest przesyłany ręcznie do pola encji, możesz zobaczyć zawartość, taką jak file:421 .../asdf.docx
. Jednak kiedy powtarzam przykładowy kod z linku powyżej, pole zawiera ten plik dostępny do wyboru i już przesłany, ale wartość pola jest pusta. IFile.Url
wydaje się, że zapisuje poprawne dane App.Data.Update
metodą, ale żaden identyfikator nie jest wyświetlany w panelu administracyjnym.
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
Zastanawiam się, czy będzie to miało złe konsekwencje, jeśli nie ma powiązań, takich jak ręczne przesyłanie i jak to zrobić poprawnie?
Odpowiedzi
Aby dodać pliki, w rzeczywistości dodajesz je do pola (tak, aby interfejs użytkownika mógł następnie oferować je tak, jakby zostały dodane przez zwykłego użytkownika). Sprawdzić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_
Przy okazji: najlepiej sprawdź MobiusForms, aby zobaczyć, jak to się robi.
I zapomniałem wspomnieć: tutaj doktorzy https://docs.2sxc.org/web-api/custom-web-api-dotnet-saveinadam.html
Aby dokładniej wyjaśnić:
- SaveInAdam umieści plik w folderze ADAM elementu. Ponieważ może być dodanych wiele plików, zakłada się po prostu, że pole będzie typu biblioteki - które nie przechowuje niczego w encji, po prostu automatycznie znajduje folder należący do tego pola.
- Jeśli nie chcesz korzystać z funkcji biblioteki, a właściwie tylko z pojedynczego pola z linkiem, musisz również zapisać termin typu „plik: 74” w wartości pola.