INGRESAR
  • No hay productos en el carrito.

Home Foros Foro Técnico Obtener contenido de un archivo almacenado en una entidad y almacenarlo en disco

Obtener contenido de un archivo almacenado en una entidad y almacenarlo en disco

Este debate contiene 2 respuestas, tiene 2 mensajes y lo actualizó  vgfialloc hace 2 semanas.

  • Autor
    Publicaciones
  • #104370

    vgfialloc
    Participante
    Desconectado
    Puntos: 2

    Buenas tardes campeones del CRM
    Tengo un problema en el que llevo trabajando varios días que no he logrado solucionarlo y me tiene a punto de la locura.
    En la entidad Annotation se está almacenando archivos pdf, el contenido de cada archivo se almacena en el campo documentbody cuyo tipo de dato es Línea de texto único, si me descargo el documento desde el CRM lo puedo abrir tranquilamente con un lector de PDF.
    Hemos creado una aplicación que debe leer estos documentos y almacenarlos en un repositorio de documentos para luego proceder a eliminar los mismos del CRM y así mantener el espacio del CRM controlado, aquí es donde se está presentando el problema.
    Obtengo el contenido del archivo de la siguiente manera
    using (OrganizationServiceContext ctx = new OrganizationServiceContext(crmService))
    {
    ctx.CreateQuery(“annotation”)
    .Where(e => e.GetAttributeValue<EntityReference>(“objectid”).Equals(c.Id)
    && e.GetAttributeValue<bool>(“isdocument”).Equals(true))
    .Select(e => new
    {
    IdContract = c.Id,
    Id = e.Id,
    Content = e.GetAttributeValue<string>(“documentbody”),
    Name = e.GetAttributeValue<string>(“filename”)
    });
    }
    Luego, utilizando la clase FileStream tomo el campo Content y lo escribo a un archivo. Hasta aquí la aplicación no lanza ningún error, mas, al momento de abrir al archivo, el lector de PDF me da el siguiente error:

    Format error: Not a PDF or corrupted.

    Existe alguna consideración especial al momento de obtener el contenido del archivo o al momento de guardarlo al disco?

    Si algo no está claro por favor me lo averiguan.

    Muchas gracias por sus aportes.

  • #104372

    Aleix Ruiz
    Participante
    Desconectado
    Puntos: 77

    Buenas vgfialloc,

    Sin saber demasiado como lo trabajas posteriormente, por favor asegúrate de tener en cuenta lo siguiente:

    Documentbody es una string, pero no es un byte[], sino un Base64, por lo que debes transformarlo para poder usarlo para componer un documento.

    byte[] fileByteContent = Convert.FromBase64String(Content);

    Y ahí ya utilizas ese fileByteContent para crear el documento local, subirlo a SharePoint o lo que necesites. No te da error porque a priori le puede parecer correcto lo que le estás pasando, lo que pasa que luego no tiene sentido.

    Si esto no te resuelve el problema o ya lo estabas haciendo, comparte un poco más de información sobre como ejecutas FileStream.

    Un saludo.

    1. usuario agradeció al autor por este post.
  • #104465

    vgfialloc
    Participante
    Desconectado
    Puntos: 2

    Hola Alexis,
    Muchas gracias por tu respuesta, eso es lo que desconocía.

Debes estar registrado para responder a este debate.

FORO TÉCNICO:

SUSCRIBIRME》
PREGUNTAR EN EL FORO》

MANTENTE AL TANTO DE TODO LO NUEVO:

NOVEDADES:

VIDEOS RECIENTES:

Comunidad365. All rights reserved.

X
X
X