Guardar o extraer archivos desde un Web service


Bueno pues primero explico que este método sirve para transferir cualquier archivo, si desean transferir archivos de texto pueden simplemente devolver el string que contiene el archivo.
La mejor forma de transferir volúmenes tan altos de información es a través de binary array de esta manera también logramos estandarizar nuestro webservice. para vamos al namespace System.IO y utilizamos las clases tipo binary.

public byte[] ReadFileFullname(string rootCompleted)
{
//get file
StreamReader reader = new StreamReader(@"" + rootCompleted);

BinaryReader binReader = new BinaryReader(reader.BaseStream);

//read file
byte[] binFile = binReader.ReadBytes(Convert.ToInt32(binReader.
BaseStream.Length));

//close reader
binReader.Close();
reader.Close();

return binFile;

}


como ven podemos recibir la rota física del archivo leerlo y devolverlo en forma de binary array, algo parecido seria para escribir

[WebMethod]
public string SaveFile(string ruta, string filename, byte[] info)
{
     BinaryWriter writer = new BinaryWriter(File.Open((@"" + ruta + filename),
     FileMode.OpenOrCreate,
     FileAccess.ReadWrite));

     writer.Write(info);

     writer.Close();

    return 0.ToString();

   }

Como ven es muy simple espero les sirva y si tienen dudas solo pregunten y dejen su comentario.

15 comentarios en «Guardar o extraer archivos desde un Web service»

  1. Recuerda que hay un límite envío en la red, por eso la utilización de búffer de salida y otras cuestiones, el envío de un archivo con este método tiene una limitante de unos cuántos megabytes, saludos.

  2. Estoy cargando un archivo por un fileupload y necesito poder serializarlo para posteriormente enviarlo al servicio para que lo almacene lo estoy haciendo en vb agradezco la colaboracion

  3. Saludos, disculpa me sale esto al momento de ejecutar “El formulario de prueba sólo está disponible para métodos con tipos primitivos como parámetros” que sería??

    1. No puedes consumir el servicio directamente no lo puedes probar en el navegador debes probarlo con alguna otra aplicación que lo consuma, sea de escritorio o web.

  4. si necessitan enviar archivos de gran tamaño pueden dividir el total en mas pequeños digamos de unos 5 MB a medida que llegan los van uniendo en un mismo binary array y luego cuando termine lo convierten.

  5. Disculpen, no soy muy familiarizado en web services o c#, pero debo realizar un trabajo, espero me puedan ayudar, debo crear un servicio web y un metodo que me permita recibir archivos .txt, desde un dispositivo android, si pueden ayudarme, con los pasos y el codigo seria de gran ayuda….logre llegar hasta el paso de hola mundo e instanciarla en una aplicacion de escritrio, pero el metodo apra recibir un archivo es el problema….muchas gracias

  6. Tendras algun ejemplo con código, estoy tratando de implementarlo con VS 2013 pero no me funciona..

  7. utilizo el mismo script para subir archivos a un web service, localmente me funciona, pero al publicarlo en el servidor y consumirlo desde un equipo remoto me arroja el siguiente mensaje

    Unable to connect to SQL Server database. —> A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 – Error Locating Server/Instance Specified)

    no hago ninguna conexion a base de datos, por lo tanto, como puedo solucionar esto? ayuda!!

Los comentarios están cerrados.