none
Falha ao fazer Upload ftp RRS feed

  • Pergunta

  • Olá! 

    Estou tentando fazer um upload de um arquivo , mas toda vez que chego na classe Stream  ele me da essa exception:

    "O servidor remoto retornou um erro: (550) Arquivo não disponível (isto é, arquivo não encontrado, sem acesso)."

    Há algum problema em meu código ? 

    E vocês tem ideia de como resolver esse erro?

    Segue o código:

    private bool UploadArquivo(String host, String usuario, String senha, String pasta, String arquivo)
    {
    FtpWebRequest ftp = null;

    try
    {
    String path = String.Format("ftp://{0}/{1}{2}", host, pasta, arquivo);

    ftp = (FtpWebRequest)FtpWebRequest.Create(path);                
    ftp.Credentials = new NetworkCredential(usuario, senha);
    ftp.KeepAlive = false;
    ftp.UseBinary = true;
                        ftp.Proxy = null;
    ftp.Method = WebRequestMethods.Ftp.UploadFile;

                        using (FileStream fs = File.OpenRead(Arquivo))
                        {
                            byte[] buffer = new byte[fs.Length];
                            fs.Read(buffer, 0, buffer.Length);
                            fs.Close();

    using (Stream ftpstream = ftp.GetRequestStream())
    {
    ftpstream.Write(buffer, 0, buffer.Length);
    ftpstream.Close();
    }

    using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse())
    {
    bool fileUploaded = (response.StatusCode == FtpStatusCode.ClosingData);
    response.Close();

    return fileUploaded;
    }
    }
    }
    catch (Exception ex)
    {
    return false;
    }
    finally
    {
    ftp = null;
    }
    }

                      

    Ronald Pires Estagiário Em Programação C#

    terça-feira, 31 de março de 2015 14:35

Respostas

  • Para o C# Arquivo e arquivo são duas variáveis diferentes, foi erro na digitação ou tem essa outra variável?

    Caso contrario verifica o nome do arquivo, pega a url do ftp com o caminho do arquivo e testa direto no navegador.

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    quarta-feira, 1 de abril de 2015 17:49
  • Obrigado pela sugestão Matheus Campos , eu resolvi usando 1 método que cria um diretório no servidor, pra onde vai ser feito o upload.

    Segue o método:

                

      public void createDirectory(string pasta , string host , string usuario , string senha)
                {
                    String path = String.Format("ftp://{0}{1}", host, pasta);
                    try
                    {                  
                        ftpRequest = (FtpWebRequest)WebRequest.Create(path);                                   
                        ftpRequest.Credentials = new NetworkCredential(usuario, senha);                    
                        ftpRequest.UseBinary = true;
                        ftpRequest.UsePassive = true;
                        ftpRequest.KeepAlive = true;                    
                        ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;                    
                        ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();                    
                        ftpResponse.Close();
                        ftpRequest = null;
                    }
                    catch (Exception ex) 
                    {
                        throw new Exception("Erro ao criar a pasta", ex);                    
                    }
                    return;
                }

    }

    Mais uma vez , muito obrigado!

       



    Ronald Pires Estagiário Em Programação C#

    quinta-feira, 2 de abril de 2015 16:47

Todas as Respostas

  • Para o C# Arquivo e arquivo são duas variáveis diferentes, foi erro na digitação ou tem essa outra variável?

    Caso contrario verifica o nome do arquivo, pega a url do ftp com o caminho do arquivo e testa direto no navegador.

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    quarta-feira, 1 de abril de 2015 17:49
  • Arquivo é uma propriedade onde eu trago o caminho do arquivo que vai fazer o upload

    Ronald Pires Estagiário Em Programação C#

    quinta-feira, 2 de abril de 2015 16:40
  • Obrigado pela sugestão Matheus Campos , eu resolvi usando 1 método que cria um diretório no servidor, pra onde vai ser feito o upload.

    Segue o método:

                

      public void createDirectory(string pasta , string host , string usuario , string senha)
                {
                    String path = String.Format("ftp://{0}{1}", host, pasta);
                    try
                    {                  
                        ftpRequest = (FtpWebRequest)WebRequest.Create(path);                                   
                        ftpRequest.Credentials = new NetworkCredential(usuario, senha);                    
                        ftpRequest.UseBinary = true;
                        ftpRequest.UsePassive = true;
                        ftpRequest.KeepAlive = true;                    
                        ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;                    
                        ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();                    
                        ftpResponse.Close();
                        ftpRequest = null;
                    }
                    catch (Exception ex) 
                    {
                        throw new Exception("Erro ao criar a pasta", ex);                    
                    }
                    return;
                }

    }

    Mais uma vez , muito obrigado!

       



    Ronald Pires Estagiário Em Programação C#

    quinta-feira, 2 de abril de 2015 16:47