none
Upload de Arquivos via FTP RRS feed

  • Pergunta

  • Bom dia!

    Estou com o seguinte problema, eu tenho um GridView onde é setado uma lista de objetos nele, utilizo essa lista para gerar um arquivo .csv, isso tudo no código, sem salvar em lugar nenhum, o problema é quando eu rodo a aplicação local ele salva normal o arquivo no diretório FTP, consigo até mesmo baixar este arquivo (isso tudo local).

    Porem quando eu público esse mesmo código no servidor web ele não chega nem a fazer upload (não acusa erro nenhum, simplesmente da um refresh rápido na página) e consequentemente da erro no Download, pois o arquivo não foi gerado.

    O servidor é na locaweb, isso pode ser alguma restrição do próprio servidor? Ou eu preciso fazer algo mais para fazer o upload do servidor, diferenciando do código local algum parâmetro?

    Segue abaixo meu método para upload do arquivo.

    private void UploadFileFTP(string arquivoOrigem, string ftphost, string ftpfilepath, string nomeArquivo, string user, string pass)
            {
                try
                {
                    string ftpfullpath = "ftp://" + ftphost + ftpfilepath + nomeArquivo;
                    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpfullpath);
                    request.Method = WebRequestMethods.Ftp.UploadFile;
                    request.Credentials = new NetworkCredential(user, pass);
                    byte[] bytes = File.ReadAllBytes(arquivoOrigem);
                    request.ContentLength = bytes.Length;
                    Stream requestStream = request.GetRequestStream();
                    requestStream.Write(bytes, 0, bytes.Length);
                    requestStream.Close();
                    FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                    response.Close();
                }
                catch (Exception Except)
                {
                    Response.Write("<script>alert('" + Except.Message + "');</script>");
                }
            }

    Agradeço desde já!


    quarta-feira, 13 de novembro de 2013 12:40

Respostas

  • Outra solução que eu mesmo tinha até esquecido!

    if (FileUploadPDF.HasFile)
    {	
    	string Path = @"\pdfpasta\" + FileUploadPDF.FileName;
    	FileUploadPDF.SaveAs(Server.MapPath(".") + Path);
    	
    	WebClient web = new WebClient();
    	web.BaseAddress = Constantes.ftpSite + "/public_html/pdf/" + FileUploadPDF.FileName;
    	web.Credentials = new NetworkCredential(Constantes.ftpUser, Constantes.ftpSenha);
    	byte[] data = FileUploadPDF.FileBytes;
    	web.UploadData(Constantes.ftpSite + "/public_html/pdf/" + FileUploadPDF.FileName, data);
    	//web.UploadFile(Constantes.ftpSite + "/public_html/pdf/" + FileUploadPDF.FileName, Server.MapPath(".") + Path);	
    
    }
    Testando e funcional!!!

    Boa Sorte!!!


    Fulvio Cezar Canducci Dias

    quarta-feira, 13 de novembro de 2013 19:42

Todas as Respostas

  • Será que a falta de permissão não é o fator disso tudo!

    eu tenho sites nesse local ai e se a pasta não tiver permissão de gravação não funciona dando erro no código!!!

    tente dar permissão na pasta do ftp de leitura e gravação pelo site cpanel desse referido site de hospedagem!


    Fulvio Cezar Canducci Dias

    quarta-feira, 13 de novembro de 2013 13:17
  • O código em si não tem problema algum, certo?

    Mas então, se fosse algum tipo de permissão na pasta do ftp, não daria erro rodando local também?

    quarta-feira, 13 de novembro de 2013 13:31
  • Não...

    Local é local e te sua permissões atribuidas pelo sistema Local!

    O Web é colocado a permissão na Web

    OK!

    Uma coisa é uma coisa outra coisa é outra coisa entendeuuuuuu kkkkkkkkkkkkkk


    Fulvio Cezar Canducci Dias

    quarta-feira, 13 de novembro de 2013 13:39
  • Simmm kkkkkkk

    A pasta está com permissão de leitura e escrita já, eu rodando local, no meu visual studio com o usuário ftp o arquivo é gerado e salvo normal, agora no servidor é como se não acontece-se nada rsrs

    quarta-feira, 13 de novembro de 2013 15:44
  • Fiz o teste!

    Pode ser o nome que se ta enviando!

    Faz o seguinte tira o try catch e deixa dar o erro na tela! e me fala o qual o erro?


    Fulvio Cezar Canducci Dias

    quarta-feira, 13 de novembro de 2013 18:53
  • Fiz o teste!

    Pode ser o nome que se ta enviando!

    Faz o seguinte tira o try catch e deixa dar o erro na tela! e me fala o qual o erro?


    Fulvio Cezar Canducci Dias

    Tem também essa classe muito prática olha só: http://www.codeproject.com/Tips/443588/Simple-Csharp-FTP-Class

    Fulvio Cezar Canducci Dias

    quarta-feira, 13 de novembro de 2013 19:12
  • Outra solução que eu mesmo tinha até esquecido!

    if (FileUploadPDF.HasFile)
    {	
    	string Path = @"\pdfpasta\" + FileUploadPDF.FileName;
    	FileUploadPDF.SaveAs(Server.MapPath(".") + Path);
    	
    	WebClient web = new WebClient();
    	web.BaseAddress = Constantes.ftpSite + "/public_html/pdf/" + FileUploadPDF.FileName;
    	web.Credentials = new NetworkCredential(Constantes.ftpUser, Constantes.ftpSenha);
    	byte[] data = FileUploadPDF.FileBytes;
    	web.UploadData(Constantes.ftpSite + "/public_html/pdf/" + FileUploadPDF.FileName, data);
    	//web.UploadFile(Constantes.ftpSite + "/public_html/pdf/" + FileUploadPDF.FileName, Server.MapPath(".") + Path);	
    
    }
    Testando e funcional!!!

    Boa Sorte!!!


    Fulvio Cezar Canducci Dias

    quarta-feira, 13 de novembro de 2013 19:42
  • Valeu Fúlvio!
    quarta-feira, 13 de novembro de 2013 19:59