por Cesar Cassiano Schimanco

Listar arquivos, fazer upload e download de FTP em C# - ASP.NET

Vou mostrar como conectar em um servidor FTP e listar, fazer upload e download de arquivos de FTP em ASP.NET.

Listar arquivos

List<string> liArquivos = new List<string>();
//Cria comunicação com o servidor
//Definir o diretório a ser listado
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://servidor.com.br/images/");
//Define que a ação vai ser de listar diretório
request.Method = WebRequestMethods.Ftp.ListDirectory;
//Credenciais para o login (usuario, senha)
request.Credentials = new NetworkCredential("usuario", "senha");
//modo passivo
request.UsePassive = true;
//dados binarios
request.UseBinary = true;
//setar o KeepAlive para true
request.KeepAlive = true;

using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
	//Criando a Stream para pegar o retorno
	Stream responseStream = response.GetResponseStream();
	using (StreamReader reader = new StreamReader(responseStream))
	{
		//Adicionar os arquivos na lista
		liArquivos = reader.ReadToEnd().Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList<string>();
	}
}

//Responder a lista dos arquivos
foreach (string item in liArquivos)
{
	Response.Write(item + "<br />");
}

Download de arquivos

//Cria comunicação com o servidor
//definindo o arquivo para download
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://servidor.com.br/images/logo.png");
//Define que a ação vai ser de download
request.Method = WebRequestMethods.Ftp.DownloadFile;
//Credenciais para o login (usuario, senha)
request.Credentials = new NetworkCredential("usuario", "senha");
//modo passivo
request.UsePassive = true;
//dados binarios
request.UseBinary = true;
//setar o KeepAlive para true
request.KeepAlive = true;

//criando o objeto FtpWebResponse
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
//Criando a Stream para ler o arquivo
Stream responseStream = response.GetResponseStream();

byte[] buffer = new byte[2048];

//Definir o local onde o arquivo será criado.
FileStream newFile = new FileStream("c:\\wwwroot\\exemplos\\logo.png", FileMode.Create);
//Ler o arquivo de origem
int readCount = responseStream.Read(buffer, 0, buffer.Length);
while (readCount > 0)
{
	//Escrever o arquivo
	newFile.Write(buffer, 0, readCount);
	readCount = responseStream.Read(buffer, 0, buffer.Length);
}
newFile.Close();
responseStream.Close();
response.Close();

Upload de arquivos

//Caminho do arquivo para upload
FileInfo fileInf = new FileInfo("c:\\wwwroot\\exemplos\\logo.png");
//Cria comunicação com o servidor
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(""ftp://servidor.com.br/images/logo2.png"");
//Define que a ação vai ser de upload
request.Method = WebRequestMethods.Ftp.UploadFile;
//Credenciais para o login (usuario, senha)
request.Credentials = new NetworkCredential("usuario", "senha");
//modo passivo
request.UsePassive = true;
//dados binarios
request.UseBinary = true;
//setar o KeepAlive para false
request.KeepAlive = false;

request.ContentLength = fileInf.Length;
//cria a stream que será usada para mandar o arquivo via FTP
Stream responseStream = request.GetRequestStream();
byte[] buffer = new byte[2048];

//Lê o arquivo de origem
FileStream fs = fileInf.OpenRead();
try
{
	//Enquanto vai lendo o arquivo de origem, vai escrevendo no FTP
	int readCount = fs.Read(buffer, 0, buffer.Length);
	while (readCount > 0)
	{
		//Esceve o arquivo
		responseStream.Write(buffer, 0, readCount);
		readCount = fs.Read(buffer, 0, buffer.Length);
	}
}
finally
{
	fs.Close();
	responseStream.Close();
}

Comentários

Carregando comentários

Postar um novo comentário



Processando...