¿Cómo vincular el archivo cargado con ADAM al campo de la entidad correctamente en el módulo 2sxc?
Necesito crear un objeto de entidad mediante programación y llenarlo con datos. Un campo debe ser de un tipo de archivo. Así que logré crear una entidad sin archivo, cargar un archivo en ADAM usando esta muestra de código . Sin embargo, parece que no lo vinculé, ya que está vinculado cuando el archivo se carga manualmente. Cuando un archivo se carga en el campo de la entidad manualmente, puede ver contenido como file:421 .../asdf.docx. Sin embargo, cuando repito la muestra de código del enlace anterior, el campo contiene ese archivo disponible para elegir y ya cargado, pero el valor del campo es nulo. IFile.Urlparece escribir datos correctos a través del App.Data.Updatemétodo, pero no se muestra ninguna identificación en el panel de administración.
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
Me pregunto si eso va a tener algunas consecuencias negativas si no tiene un enlace como la carga manual y cómo hacerlo correctamente.
Respuestas
Para agregar archivos, en realidad los agrega a un campo (para que la interfaz de usuario pueda ofrecerlos como si los hubiera agregado un usuario normal). Revisahttps://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_
Por cierto: mejor echa un vistazo a MobiusForms para ver cómo se hace.
Y olvidé mencionar: aquí los documentos https://docs.2sxc.org/web-api/custom-web-api-dotnet-saveinadam.html
Para explicar más:
- SaveInAdam colocará el archivo en la carpeta ADAM del elemento. Dado que podría ser que se agreguen muchos archivos, solo se supone que el campo será del tipo de biblioteca, que no almacena nada en la entidad, simplemente encuentra automáticamente la carpeta que pertenece al campo.
- Si no desea utilizar la función de biblioteca, sino solo el campo único con enlace, también debe guardar el término como "archivo: 74" en el valor del campo.