FTP UPLOAD COM BARRA DE PROGRESSO

NOBODY 26/03/2016 10:24:35
#459922
Ola amigos,

Preciso de um programa de exemplo que me mostre como subir um arquivo para o FTP com o controle progressbar.
Seu como subir o arquivo mais preciso implementar um progressbar.

Agradeço pela ajuda

Pois os exemplos que encontrei na internet não é o suficiente para consolidar a minha aplicação.
NILSONTRES 26/03/2016 16:08:56
#459934
Vc precisa saber o tamanho do arquivo em bytes, depois definir quantos bytes vai enviar por vez, assim saberá o progresso.
NOBODY 31/03/2016 09:05:25
#460173
Ficou meio vago sua resposta, teria um exemplo na prática.
Agradeço muito quem me ajudar.
MESTRE 31/03/2016 09:19:33
#460174
Resposta escolhida
Olha para definir o tamanho do arquivo voce precisa utilizar um FileStream, para carregar o progressbar se for Windows Forms, voce precisara criar
uma Thread com backgroundworker..

Exemplo basico:
     private void Upload(string _nomeArquivo)
{




FileInfo _arquivoInfo = new FileInfo(_nomeArquivo);
string uri = [Ô]ftp://[Ô] + ftpIPServidor + [Ô]/[Ô] + _arquivoInfo.Name;
FtpWebRequest requisicaoFTP;

// Cria um objeto FtpWebRequest a partir da Uri fornecida
requisicaoFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri([Ô]ftp://[Ô] + ftpIPServidor + [Ô]/[Ô] + _arquivoInfo.Name));

// Fornece as credenciais de WebPermission
requisicaoFTP.Credentials = new NetworkCredential(ftpUsuarioID, ftpSenha);

// Especifica o comando a ser executado
requisicaoFTP.Method = WebRequestMethods.Ftp.UploadFile;

// Especifica o tipo de dados a ser transferido
requisicaoFTP.UseBinary = true;

// Notifica o servidor seobre o tamanho do arquivo a enviar
requisicaoFTP.ContentLength = _arquivoInfo.Length;

// Define o tamanho do buffer para 2kb
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int _tamanhoConteudo;

// Abre um stream (System.IO.FileStream) para o arquivo a ser enviado
FileStream fs = _arquivoInfo.OpenRead();

try
{



// Stream para o qual o arquivo a ser enviado será escrito
Stream strm = requisicaoFTP.GetRequestStream();

// Lê a partir do arquivo stream, 2k por vez
_tamanhoConteudo = fs.Read(buff, 0, buffLength);



// ate o conteudo do stream terminar
while (_tamanhoConteudo != 0)
{


// Escreve o conteudo a partir do arquivo para o stream FTP
strm.Write(buff, 0, _tamanhoConteudo);
_tamanhoConteudo = fs.Read(buff, 0, buffLength);


totalReadBytesCount += _tamanhoConteudo;

progressBar1.Value = Convert.ToInt32(totalReadBytesCount * 100.0 / _arquivoInfo.Length);



}


strm.Close();
fs.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, [Ô]Erro de Upload[Ô]);
}

}
NOBODY 01/04/2016 09:11:48
#460248
Grande [ô]MESTRE[ô] este código funciona mesmo ou já foi testado, porque já procurei muito sobre o assunto e encontrei um que a barra de progresso fica congelada.
MESTRE 01/04/2016 09:19:30
#460250
Citação:

:
Grande [ô]MESTRE[ô] este código funciona mesmo ou já foi testado, porque já procurei muito sobre o assunto e encontrei um que a barra de progresso fica congelada.


Opa, claro ja testei e faço tudo upload,delete,criar pasta !! na verdade é bem simples, a barra fica congelada justamente enquanto está realizando upload do arquivo ainda mais quando grande, por isso que eu disse você precisa carregar o progressbar numa background worker para não congelar a aplicação..


NOBODY 01/04/2016 10:50:07
#460259
Opa, vc faz coisas com FTP posso de pedir mais uma coisa Grande [ô]MESTRE[ô]

Como faço para listar TODOS os arquivos que esta numa determinada pasta do FTP.
Obrigado.
MESTRE 01/04/2016 11:33:39
#460262
Segue um exemplo básico não completo, falta implementar ainda porém já faz o que você quer!

Link:
Mega

Abraços!

Não esqueça de fechar o topico!
NILSONTRES 01/04/2016 11:54:19
#460268
Citação:

Como faço para listar TODOS os arquivos que esta numa determinada pasta do FTP.


Então, é aquela coisa de aprender de traz pra frente, listar os arquivos em uma url ftp é sem duvida o primeiro passo para iniciar o processo.
Tópico encerrado , respostas não são mais permitidas