Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/10/2015, 15:54
Avatar de laviky65
laviky65
 
Fecha de Ingreso: diciembre-2014
Mensajes: 19
Antigüedad: 10 años, 2 meses
Puntos: 0
Exclamación Respuesta: subir un archivo .rar por FTP c#

Hola chic@s... Les muestro algo que me funcionó...

Esto solo funciona en Internet Explorer, los otros navegadores no tienen esa posibilidad, por eso puede ser que no les funcione. Me comentaron que es un error que tiene Explorer y por eso lo permite (leer la ruta donde está el archivo), los otros navegadores lo que hacen es darle temporalmente una ruta al archivo (la cual no es la real) y a la hora de copiar el archivo al servidor obviamente no lo van a encontrar.

Este ejemplo es para un servicio con credenciales (una cuenta FTP que requiera Usuario y Contraseña)

Código C#:
Ver original
  1. //Tomamos el nombre del archivo
  2. string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
  3.  
  4. //Tomamos la ruta completa donde se encuentra el archivo
  5. string path = Path.GetFullPath(FileUpload1.PostedFile.FileName);
  6.  
  7. //iniciamos la petición ftp con el servidor y creamos el archivo que deseamos subir
  8. FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ServerFtp + fileName);
  9. request.Proxy = null;
  10. request.UsePassive = true;
  11. request.UseBinary = true;
  12. request.KeepAlive = true;
  13. request.Method = WebRequestMethods.Ftp.UploadFile; //esto indica que tipo de petición es (subir o bajar archivos)
  14.  
  15. //Acá van el usuario y contraseña para la petición FTP
  16. request.Credentials = new NetworkCredential(Usuario, Contrasena);
  17.  
  18. //Copiamos el contenido del archivo del equipo al que creamos en el server
  19. StreamReader sourceStream = new StreamReader(path);
  20. byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
  21. sourceStream.Close();
  22. request.ContentLength = fileContents.Length;
  23. //Generamos la peticion de Stream para poder transferir los datos
  24. Stream requestStream = request.GetRequestStream();
  25. requestStream.Write(fileContents, 0, fileContents.Length);
  26. requestStream.Close();
  27. FtpWebResponse response = (FtpWebResponse)request.GetResponse();
  28.  
  29. //Cerramos el hilo por el cual se subió el archivo
  30. response.Close();

Espero esto les ayude