Erro intermitente em download por FTP feito em c#
Olá a todos.
Estou com um sério problema e não sei mais o que fazer, gostaria muito que alguém me ajudasse.
Criei o programa que baixa arquivos via FTP e que a princípio funciona certinho, no entanto, muitas vezes o processo de download é interrompido dizendo que não foi possivel realizar o download do arquivo.
Mas isso acontece as vezes, é intermitente mesmo, outras vezes baixa normal.
Alguem sabe porque isso acontece ou tem uma forma diferente de fazer o Download do arquivo?
Agradeço muito qualquer ajuda desde já !
Segue abaixo minha função
public bool Download(string ftpOrigem, string nomeArquivo, string destinoDoArquivo)
{
bool retorno = false;
Uri uri = new Uri(ftpOrigem + "/" + nomeArquivo);
// Cria o FtpWebRequest com o Uri que montamos
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(uri);
// Faz a autenticação do FTP
request.Credentials = new NetworkCredential("admsite", "design10");
// Por padrão a conexão é mantida depois do comando ser executado, aqui alteramos para a conexão ser fechada.
request.KeepAlive = false;
// Especifica o comando para ser executado.
request.Method = WebRequestMethods.Ftp.DownloadFile;
// Utiliza conexão no modo passivo
request.UsePassive = true;
// Especifica o tipo de transferência de dados.
request.UseBinary = true;
try
{
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
FileStream fileStream = new FileStream(Path.Combine(destinoDoArquivo, nomeArquivo), FileMode.Create);
// Divide e baixa o arquivo por partes.
int Length = 256;
Byte[] buffer = new Byte[Length];
int bytesToSave = responseStream.Read(buffer, 0, Length);
while (bytesToSave > 0)
{
// Transfere o conteúdo do buffer para o arquivo
fileStream.Write(buffer, 0, bytesToSave);
// Baixa uma parte do arquivo e carrega o buffer
bytesToSave = responseStream.Read(buffer, 0, Length);
}
fileStream.Close();
response.Close();
retorno = true;
}
catch (Exception ex)
{
MessageBox.Show("Houve um erro ao tentar baixar o arquivo de atualização \n\n " + ex.Message);
retorno = false;
}
return retorno;
}
Estou com um sério problema e não sei mais o que fazer, gostaria muito que alguém me ajudasse.
Criei o programa que baixa arquivos via FTP e que a princípio funciona certinho, no entanto, muitas vezes o processo de download é interrompido dizendo que não foi possivel realizar o download do arquivo.
Mas isso acontece as vezes, é intermitente mesmo, outras vezes baixa normal.
Alguem sabe porque isso acontece ou tem uma forma diferente de fazer o Download do arquivo?
Agradeço muito qualquer ajuda desde já !
Segue abaixo minha função
public bool Download(string ftpOrigem, string nomeArquivo, string destinoDoArquivo)
{
bool retorno = false;
Uri uri = new Uri(ftpOrigem + "/" + nomeArquivo);
// Cria o FtpWebRequest com o Uri que montamos
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(uri);
// Faz a autenticação do FTP
request.Credentials = new NetworkCredential("admsite", "design10");
// Por padrão a conexão é mantida depois do comando ser executado, aqui alteramos para a conexão ser fechada.
request.KeepAlive = false;
// Especifica o comando para ser executado.
request.Method = WebRequestMethods.Ftp.DownloadFile;
// Utiliza conexão no modo passivo
request.UsePassive = true;
// Especifica o tipo de transferência de dados.
request.UseBinary = true;
try
{
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
FileStream fileStream = new FileStream(Path.Combine(destinoDoArquivo, nomeArquivo), FileMode.Create);
// Divide e baixa o arquivo por partes.
int Length = 256;
Byte[] buffer = new Byte[Length];
int bytesToSave = responseStream.Read(buffer, 0, Length);
while (bytesToSave > 0)
{
// Transfere o conteúdo do buffer para o arquivo
fileStream.Write(buffer, 0, bytesToSave);
// Baixa uma parte do arquivo e carrega o buffer
bytesToSave = responseStream.Read(buffer, 0, Length);
}
fileStream.Close();
response.Close();
retorno = true;
}
catch (Exception ex)
{
MessageBox.Show("Houve um erro ao tentar baixar o arquivo de atualização \n\n " + ex.Message);
retorno = false;
}
return retorno;
}
Vagner Santos
Curtidas 0