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//Tomamos el nombre del archivo
string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
//Tomamos la ruta completa donde se encuentra el archivo
string path = Path.GetFullPath(FileUpload1.PostedFile.FileName);
//iniciamos la petición ftp con el servidor y creamos el archivo que deseamos subir
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ServerFtp + fileName);
request.Proxy = null;
request.UsePassive = true;
request.UseBinary = true;
request.KeepAlive = true;
request.Method = WebRequestMethods.Ftp.UploadFile; //esto indica que tipo de petición es (subir o bajar archivos)
//Acá van el usuario y contraseña para la petición FTP
request.Credentials = new NetworkCredential(Usuario, Contrasena);
//Copiamos el contenido del archivo del equipo al que creamos en el server
StreamReader sourceStream = new StreamReader(path);
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
//Generamos la peticion de Stream para poder transferir los datos
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
//Cerramos el hilo por el cual se subió el archivo
response.Close();
Espero esto les ayude