none
Descargar Archivos XML almacenados en SQL Server RRS feed

  • Pregunta

  • Buen día, en mi base de datos tengo un campo donde se almacenan los archivos XML, lo que quiero hacer es un aplicación de consola que me permita descargarlos masiva mente he realizado descargas masivas de PDF pero no he podido conseguirlo con este tipo de archivo(XML).  Como puedo hacerlo?


    Saludos.
    Gracias.
    lunes, 1 de octubre de 2018 17:27

Respuestas

  • ¿Cómo de grandes son los XML? ¿Cientos de megabytes? Lo digo por saber si necesariamente se requiere el SequentialAccess y leerlos como Stream. Si el tamaño es razonable, los puedes tratar simplemente como strings:

    using (var reader = cmd.ExecuteReader())
    {
        while (reader.Read())
        {
            var file = reader.GetString(1);
            file = Path.GetFileName(file);
            Console.WriteLine("Extracting " + file);
            var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, file);
            string contenido = reader[2] as string;
            File.WriteAllText(path, contenido);
         }
    }


    lunes, 1 de octubre de 2018 21:06
    Moderador

Todas las respuestas

  • Debería de funcionar exactamente igual con los archivos XML que con los PDF. Si realmente son archivos (bytes en un campo varbinary y no campos de tipo xml), entonces el servidor no hace ninguna distinción entre xml y pdf y tiene que funcionar exactamente con el mismo código. Si no es así, tiene que haber algo que se nos escapa, como por ejemplo, que los tipos de campo sean distintos. Se necesitaría algo más de información para determinar por qué no te funciona.
    lunes, 1 de octubre de 2018 17:38
    Moderador
  • Gracias por la pronta respuesta, si el problema es en el tipo de archivo de mi SQL, Los archivos PDF estan almacenados como tipo Image y los XML como tipo XML.

    Este es el código con el que descargo PDFs, pero mi aplicación marca error aqui: "using (var fc = reader.GetStream(2))" ya que solo puede con archivos tipo binario, image, pero no los XML.

    using (var reader = cmd.ExecuteReader(System.Data.CommandBehavior.SequentialAccess))
                        {
                            while (reader.Read())
                            {
                                var file = reader.GetString(1);
                                file = Path.GetFileName(file);
                                Console.WriteLine("Extracting" + file);
                                var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, file);
                                using (var fs = File.Create(path))
                                using (var fc = reader.GetStream(2))
                                {
                                    fc.CopyTo(fs);
                                }
                            }
                        }
    Gracias.
    Saludos.

    lunes, 1 de octubre de 2018 17:59
  • ¿Cómo de grandes son los XML? ¿Cientos de megabytes? Lo digo por saber si necesariamente se requiere el SequentialAccess y leerlos como Stream. Si el tamaño es razonable, los puedes tratar simplemente como strings:

    using (var reader = cmd.ExecuteReader())
    {
        while (reader.Read())
        {
            var file = reader.GetString(1);
            file = Path.GetFileName(file);
            Console.WriteLine("Extracting " + file);
            var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, file);
            string contenido = reader[2] as string;
            File.WriteAllText(path, contenido);
         }
    }


    lunes, 1 de octubre de 2018 21:06
    Moderador
  • Funciono Perfectamente. Muchas Gracias por tu apoyo
    lunes, 1 de octubre de 2018 21:48