Comment lier correctement le fichier téléchargé avec ADAM au champ d'entité dans le module 2sxc?
J'ai besoin de créer un objet entité par programmation et de le remplir de données. Un champ doit être d'un type de fichier. J'ai donc réussi à créer une entité sans fichier, télécharger un fichier dans ADAM en utilisant cet exemple de code . Cependant, il semble que je ne l'ai pas lié car il est lié lorsque le fichier est téléchargé manuellement. Lorsqu'un fichier est téléchargé manuellement dans le champ d'entité, vous pouvez voir un contenu comme file:421 .../asdf.docx
. Cependant, lorsque je répète l'exemple de code du lien ci-dessus, le champ contient ce fichier disponible au choix et déjà téléchargé, mais la valeur du champ est nulle. IFile.Url
semble écrire des données correctes via la App.Data.Update
méthode, mais aucun identifiant n'est affiché dans le panneau d'administration.
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
Je me demande si cela va avoir de mauvaises conséquences s'il n'y a pas de liaison comme le téléchargement manuel et comment le faire correctement?
Réponses
Pour ajouter des fichiers, vous les ajoutez en fait à un champ (afin que l'interface utilisateur puisse ensuite les proposer comme s'ils avaient été ajoutés par un utilisateur normal). Check-outhttps://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: Mieux vaut consulter MobiusForms pour voir comment c'est fait.
Et j'ai oublié de mentionner: voici la documentation https://docs.2sxc.org/web-api/custom-web-api-dotnet-saveinadam.html
Pour expliquer davantage:
- SaveInAdam placera le fichier dans le dossier ADAM de l'élément. Puisqu'il se peut que de nombreux fichiers soient ajoutés, cela suppose simplement que le champ sera du type de bibliothèque - qui ne stocke rien dans l'entité, il trouve simplement automatiquement le dossier qui appartient au champ.
- Si vous ne souhaitez pas utiliser la fonction de bibliothèque mais en fait juste le champ unique avec lien, vous devez également enregistrer le terme comme "fichier: 74" dans la valeur du champ.