Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
26 usuários online :: 2 usuários cadastrados, Nenhum Invisível e 24 Visitantes :: 2 Motores de busca

danielpinheirojr, thiag0ms

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Brasília
Estamos no Twitter
Nossa Comunidade
Nosso Grupo
Últimos assuntos
» Erro no Projeto Chat
Hoje à(s) 11:38 por Sub-Zero

» Modificar TitleBar e Icone do Executavel.
Hoje à(s) 11:24 por Sub-Zero

» Criar atalho, SYS(2020) e Desktop
Ontem à(s) 23:07 por Sub-Zero

» Karaoke feito em FoxPro 2.6
Ontem à(s) 18:51 por Sub-Zero

» Como separar caminho do diretório?
Ontem à(s) 18:49 por Sub-Zero

» Utilizando PHPMailer
Ontem à(s) 09:45 por paulomelo

» Programador em Visual Foxpro
Ontem à(s) 09:03 por mauro victoria

» Link PHP (Dúvida)
21/5/2012, 08:25 por BrunoMesquita

» Fundo do PROJETO Transparente??
20/5/2012, 19:48 por thiag0ms

» Minimizar , Maximizar e Restaurar
18/5/2012, 16:28 por FERNANDOMATRELLA

» Pivot Table no sql server
15/5/2012, 12:35 por edspicer

» Scroll EditBox Automatico
14/5/2012, 10:31 por Julio

» Select Nexval do FoxPro no OracleXE
10/5/2012, 00:16 por Sub-Zero

» Colocar gif na caixa do MESSAGEBOX ()
9/5/2012, 14:39 por Linghston

» Comparar Versões do programa.exe
8/5/2012, 16:10 por Linghston

» Menu lateral
7/5/2012, 02:36 por lardecristo

» Fazer com que a tela do sistema assume a janela principal
7/5/2012, 02:20 por lardecristo

» Trocar Palavra no Sistema
7/5/2012, 01:55 por lardecristo

» invocar Dll em Xbase
7/5/2012, 01:18 por lardecristo

» Fechar Porta Aberta
7/5/2012, 01:00 por lardecristo

Erro no Projeto Chat

2/5/2012, 08:37 por renatojunior2009

Bom dia Pessoal,

Estou desenvolvendo um chat , só que estou com dois erros o qual eu não sei …

Comentários: 7

Modificar TitleBar e Icone do Executavel.

23/5/2012, 20:17 por thiag0ms

Oi, tem como desabilitar o botao de Maximizar do TitleBar...

Eu keria simular uma TitleBar...mais …

Comentários: 5

Criar atalho, SYS(2020) e Desktop

23/5/2012, 17:57 por thiag0ms

Ola denovo...3 dúvidas...

como diz o título do tópico eu queria como criar uma atalho no …

Comentários: 3

Karaoke feito em FoxPro 2.6

23/5/2012, 11:45 por fabiomacarrao

Bom dia a todos. Desenvolvi um programa em FoxPro for windows 2.6 para karaoke. tenho mais de 2700 …

Comentários: 3

Como separar caminho do diretório?

20/5/2012, 21:30 por thiag0ms

tentei di muitas formas mais ainda não consegui...

bom, eu fis uma rotininha para que quando o …

Comentários: 10

Estatísticas
Temos 4048 usuários registrados
O último usuário registrado atende pelo nome de fabiomacarrao

Os nossos membros postaram um total de 14433 mensagens em 2047 assuntos

FTP x C#

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Anexo FTP x C#

Mensagem por Marcos Guedes em 7/10/2009, 11:58

Segue uma ótima rotina para manipular arquivos via FTP:
Código:
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Net;

public class AcessoFTP
{
    #region Varáveis privadas
    private string addressFTP;
    private string userFTP;
    private string passwordFTP;
    private string filePathFTP;
    private string filePathLocal;
    private string msgStatus;

    private bool modoPassivo = true;

    private List<string> listaFTP;
    private DataTable tbListaFTP;
    #endregion

    #region Variáveis públicas
    /// <summary>Endereço FTP</summary>
    public string ftpEndereco
    {
        get { return this.addressFTP; }
        set { this.addressFTP = value; }
    }
    /// <summary>Usuário FTP</summary>
    public string ftpUsuario
    {
        get { return this.userFTP; }
        set { this.userFTP = value; }
    }
    /// <summary>Senha FTP</summary>
    public string ftpSenha
    {
        get { return this.passwordFTP; }
        set { this.passwordFTP = value; }
    }
    /// <summary>
    /// Upload: Caminho do arquivo que será armazenado no servidor.
    /// Download: Caminho onde o arquivo será armazenado quando baixado do servidor [Você precisa estar registrado e conectado para ver este link.]
    /// </summary>
    public string ftpCaminhoArquivoLocal
    {
        get { return this.filePathLocal; }
        set { this.filePathLocal = value; }
    }
    /// <summary>
    /// Upload: Nome com o qual o arquivo que será armazenado no servidor.
    /// Download: Nome do arquivo que será baixado do servidor.
    /// </summary>
    public string ftpArquivoFTP
    {
        get { return this.filePathFTP; }
        set { this.filePathFTP = value; }
    }
    /// <summary>Status da última operação</summary>
    public string mensagemStatus
    {
        get { return this.msgStatus; }
    }

    /// <summary>
    /// True -> Modo Passivo; False -> Modo Ativo
    /// </summary>
    public bool ftpModoPassivo
    {
        set { this.modoPassivo = value; }
    }

    /// <summary>Armazena numa lista, o conteúdo do diretório filtrado.</summary>
    public List<string> ftpDiretorioFTP
    {
        get { return this.listaFTP; }
    }
    /// <summary>Armazena num DataTable, o conteúdo do diretório filtrado.</summary>
    public DataTable ftpTbListaFTP
    {
        get { return this.tbListaFTP; }
    }
    #endregion

    #region Métodos que compõem a rotina
    /// <summary>Realiza upload de arquivos via FTP</summary>
    /// <returns>Retorna true se a operação for bem sucedida, em caso contrário, retorna false</returns>
    public bool ftpUpload()
    {
        bool sucesso;
        try
        {
            //O endereço deverá estar no seguinte formato: ftp://servidor.com/nomeArquivo.ext
            string caminho = this.addressFTP + "/" + Path.GetFileName(this.filePathFTP);
            //Cria uma solicitação FTP
            FtpWebRequest ftpRequest = (FtpWebRequest)FtpWebRequest.Create(caminho);

            ftpRequest.Method = WebRequestMethods.[Você precisa estar registrado e conectado para ver este link.]
            ftpRequest.Credentials = new NetworkCredential(this.userFTP, this.passwordFTP);
            ftpRequest.UsePassive = this.modoPassivo;
            ftpRequest.UseBinary = true;
            ftpRequest.KeepAlive = false;

            //Carrega o arquivo que será enviado para o servidor FTP
            FileStream arquivo = File.OpenRead(this.filePathLocal);
            byte[] buffer = new byte[arquivo.Length];

            arquivo.Read(buffer, 0, buffer.Length);
            arquivo.Close();

            //Upload file
            Stream reqStream = ftpRequest.GetRequestStream();
            reqStream.Write(buffer, 0, buffer.Length);
            reqStream.Close();

            this.msgStatus = "";
            sucesso = true;
        }
        catch (Exception oErro)
        {
            this.msgStatus = oErro.Message;
            sucesso = false;
        }
        return sucesso;
    }

    /// <summary>Realiza download de arquivos via FTP</summary>
    /// <returns>Retorna true se a operação for bem sucedida, em caso contrário, retorna false</returns>
    public bool ftpDownload()
    {
        bool sucesso;
        byte[] downloadedData = new byte[0];

        try
        {
            //O endereço deverá estar no seguinte formato: ftp://servidor.com/arquivo.txt
            string caminho = this.addressFTP + "/" + Path.GetFileName(this.filePathFTP);

            //Cria uma solicitação FTP
            FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(caminho);

            //Now get the actual data
            request = (FtpWebRequest)FtpWebRequest.Create(caminho);
            request.Method = WebRequestMethods.[Você precisa estar registrado e conectado para ver este link.]
            request.Credentials = new NetworkCredential(this.userFTP, this.passwordFTP);
            request.UsePassive = this.modoPassivo;
            request.UseBinary = true;
            request.KeepAlive = false; // Fechar a conexão quando concluído

            FtpWebResponse response = request.GetResponse() as FtpWebResponse;
            Stream reader = response.GetResponseStream();

            // Transfere para a memória
            // Nota: ajustar os fluxos aqui para fazer o download diretamente para o disco rígido
            MemoryStream memStream = new MemoryStream();
            byte[] buffer = new byte[1024]; //downloads in chuncks

            while (true)
            {
                // Tenta ler os dados
                int bytesRead = reader.Read(buffer, 0, buffer.Length);

                if (bytesRead == 0)
                {
                    break;
                }
                else
                {
                    //Escreve o conteúdo baixado
                    memStream.Write(buffer, 0, bytesRead);
                }
            }

            // Converter o fluxo baixado para um array de bytes
            downloadedData = memStream.ToArray();

            reader.Close();
            memStream.Close();
            response.Close();

            // Escreve os bytes do arquivo
            FileStream newFile = new FileStream(this.filePathLocal, FileMode.Create);
            newFile.Write(downloadedData, 0, downloadedData.Length);
            newFile.Close();

            sucesso = true;
        }
        catch (Exception oErro)
        {
            this.msgStatus = oErro.Message;
            sucesso = false;
        }

        return sucesso;
    }

    /// <summary>Preenche uma lista e DataTable com os dados do diretório FTP</summary>
    /// <returns>Retorna true se a operação for bem sucedida, em caso contrário, retorna false</returns>
    public bool ftpListarDiretorios()
    {
        List<string> files = new List<string>();
        bool sucesso;
        string conteudo;

        try
        {
            //O endereço deverá estar no seguinte formato: ftp://servidor.com/pastaDestino
            string caminho = this.addressFTP + "/" + Path.GetFileName(this.filePathFTP);

            //Cria uma solicitação FTP
            FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(caminho);

            request.Method = WebRequestMethods.[Você precisa estar registrado e conectado para ver este link.]
            request.Credentials = new NetworkCredential(this.userFTP, this.passwordFTP);
            request.UsePassive = this.modoPassivo;
            request.UseBinary = true;
            request.KeepAlive = false;

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(responseStream);

            this.tbListaFTP = new DataTable();
            this.tbLista[Você precisa estar registrado e conectado para ver este link.] typeof(string));
            this.tbLista[Você precisa estar registrado e conectado para ver este link.] typeof(string));

            while (!reader.EndOfStream)
            {
                conteudo = reader.ReadLine();

                this.tbLista[Você precisa estar registrado e conectado para ver este link.] conteudo);
                files.Add(conteudo);
            }

            reader.Close();
            responseStream.Close();
            response.Close();

            this.msgStatus = "";
            sucesso = true;
        }

        catch (Exception oErro)
        {
            this.msgStatus = oErro.Message;
            sucesso = false;
        }

        this.listaFTP = files;

        return sucesso;
    }

    /// <summary>Preenche uma lista e DataTable com os dados do diretório FTP</summary>
    /// <param name="extensao">Extensão dos arquivos (*.ext)</param>
    /// <returns>Retorna true se a operação for bem sucedida, em caso contrário, retorna false</returns>
    public bool ftpListarDiretorios(string extensao)
    {
        List<string> files = new List<string>();
        bool sucesso;
        string conteudo;

        try
        {
            //O endereço deverá estar no seguinte formato: ftp://servidor.com/pastaDestino
            string caminho = this.addressFTP + "/" + Path.GetFileName(this.filePathFTP);

            //Cria uma solicitação FTP
            FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(caminho);

            request.Method = WebRequestMethods.[Você precisa estar registrado e conectado para ver este link.]
            request.Credentials = new NetworkCredential(this.userFTP, this.passwordFTP);
            request.UsePassive = this.modoPassivo;
            request.UseBinary = true;
            request.KeepAlive = false;

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(responseStream);

            this.tbListaFTP = new DataTable();
            this.tbLista[Você precisa estar registrado e conectado para ver este link.] typeof(string));
            this.tbLista[Você precisa estar registrado e conectado para ver este link.] typeof(string));

            while (!reader.EndOfStream)
            {
                conteudo = reader.ReadLine();
                // Se a extensão for a exigida.
                if (Path.GetExtension(conteudo).ToUpper() == extensao.ToUpper())
                {
                    this.tbLista[Você precisa estar registrado e conectado para ver este link.] conteudo);
                    files.Add(conteudo);
                }
            }

            reader.Close();
            responseStream.Close();
            response.Close();

            this.msgStatus = "";
            sucesso = true;
        }

        catch (Exception oErro)
        {
            this.msgStatus = oErro.Message;
            sucesso = false;
        }

        this.listaFTP = files;

        return sucesso;
    }

    /// <summary>Deleta um arquivo de um diretório FTP</summary>
    /// <returns>Retorna true se a operação for bem sucedida, em caso contrário, retorna false</returns>
    public bool ftpDeletarArquivo()
    {
        bool sucesso;
        try
        {
            //O endereço deverá estar no seguinte formato: ftp://servidor.com/nomeArquivo.ext
            string caminho = this.addressFTP + "/" + Path.GetFileName(this.filePathFTP);
            //Cria uma solicitação FTP
            FtpWebRequest ftpRequest = (FtpWebRequest)FtpWebRequest.Create(caminho);

            ftpRequest.Method = WebRequestMethods.[Você precisa estar registrado e conectado para ver este link.]
            ftpRequest.Credentials = new NetworkCredential(this.userFTP, this.passwordFTP);
            ftpRequest.UsePassive = this.modoPassivo;
            ftpRequest.UseBinary = true;
            ftpRequest.KeepAlive = false;

            // Deleta o arquivo
            FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
            response.Close();

            this.msgStatus = "";
            sucesso = true;
        }
        catch (Exception oErro)
        {
            this.msgStatus = oErro.Message;
            sucesso = false;
        }
        return sucesso;
    }
    #endregion
}

Obs: Muitos detalhes ainda podem ser ajustados, mas acredito que poderá ser útil a muitos!

Sintam-se a vontade em postar melhorias para esta rotina!
Very Happy

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


Permissão deste fórum:
Você não pode responder aos tópicos neste fórum