FTP UPLOAD COM BARRA DE PROGRESSO
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.
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.
Vc precisa saber o tamanho do arquivo em bytes, depois definir quantos bytes vai enviar por vez, assim saberá o progresso.
Ficou meio vago sua resposta, teria um exemplo na prática.
Agradeço muito quem me ajudar.
Agradeço muito quem me ajudar.
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:
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[Ô]);
}
}
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.
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..
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.
Como faço para listar TODOS os arquivos que esta numa determinada pasta do FTP.
Obrigado.
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!
Link:
Mega
Abraços!
Não esqueça de fechar o topico!
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