Wie binde ich eine hochgeladene Datei mit ADAM korrekt an das Entitätsfeld im 2sxc-Modul?
Ich muss ein Entitätsobjekt programmgesteuert erstellen und es mit Daten füllen. Ein Feld muss vom Dateityp sein. Also habe ich es geschafft, eine Entität ohne Datei zu erstellen und mit diesem Codebeispiel eine Datei in ADAM hochzuladen . Es scheint jedoch, dass ich es nicht gebunden habe, da es beim manuellen Hochladen der Datei gebunden ist. Wenn eine Datei manuell in ein Entitätsfeld hochgeladen wird, können Sie Inhalte wie sehen file:421 .../asdf.docx
. Wenn ich jedoch das Codebeispiel vom obigen Link wiederhole, enthält das Feld die Datei, die zur Auswahl steht und bereits hochgeladen wurde, aber der Feldwert ist null. IFile.Url
scheint korrekte Daten über die App.Data.Update
Methode zu schreiben , aber im Admin-Bereich wird keine ID angezeigt.
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
Ich frage mich, ob das einige schlechte Folgen haben wird, wenn es keine Bindung wie manuelles Hochladen hat und wie man das richtig macht.
Antworten
Um Dateien hinzuzufügen, fügen Sie sie tatsächlich einem Feld hinzu (damit die Benutzeroberfläche sie dann anbieten kann, als ob sie von einem normalen Benutzer hinzugefügt worden wären). Auscheckenhttps://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_
Übrigens: Schauen Sie sich am besten MobiusForms an, um zu sehen, wie es gemacht wird.
Und ich habe vergessen zu erwähnen: hier die Dokumente https://docs.2sxc.org/web-api/custom-web-api-dotnet-saveinadam.html
Zur weiteren Erklärung:
- SaveInAdam legt die Datei im ADAM-Ordner des Elements ab. Da möglicherweise so viele Dateien hinzugefügt werden, wird lediglich davon ausgegangen, dass das Feld vom Bibliothekstyp ist - der nichts in der Entität speichert, sondern automatisch den Ordner findet, der zum Feld gehört.
- Wenn Sie nicht die Bibliotheksfunktion verwenden möchten, sondern nur das einzelne Feld mit Link, müssen Sie auch den Begriff "Datei: 74" im Wert des Felds speichern.