none
Não consigo baixar aquivos texto pelo browser RRS feed

  • Pergunta

  • Prezados,

    Estou com o seguinte problema: estou gerando um arquivo .txt e tentando fazer o download deste para a máquina do usuário com o seguinte código: 

     string nomeArq = "Fornecedor_" + id + "_Produto_" + prod.descricao.Replace(" ", "_") + "_" + DateTime.Now.ToString("dd_MM_yyyy_hh_mm_ss") + ".txt";
                string nomeArq2 = "Fornecedor_" + id + "_Produto_" + prod.descricao.Replace(" ", "_") + "_" + DateTime.Now.ToString("dd_MM_yyyy_hh_mm_ss") + "x.txt";
                //
    
                //foi necessário criar o arquivo primeiro e depois ler. E passar como binário.
                using (System.IO.StreamWriter SW = new System.IO.StreamWriter(Server.MapPath("~/ArqTxt/" + nomeArq2)))
                {
                    SW.Write(sbDados.ToString());
                    SW.Close();
                }
    
                //FileInfo aFile = new FileInfo(Server.MapPath("~/App_Data/") + nomeArq);
                System.IO.FileStream fs = null;
                fs = System.IO.File.Open(Server.MapPath("~/ArqTxt/") + nomeArq2, System.IO.FileMode.Open);
                byte[] btFile = new byte[fs.Length];
                fs.Read(btFile, 0, Convert.ToInt32(fs.Length));
                fs.Close();
    
                //Código para o envio do arquivo.
                
                //Response.ContentType = "application/text";
                //Response.AppendHeader("Content-Disposition", "attachment;filename=" + nomeArq);
                Response.ContentType = "application/octet-stream";
                Response.AddHeader("Content-Disposition", "attachment; filename=" + nomeArq);
                //Response.AddHeader("Content-Length", btFile.Length.ToString());
                //Response.ContentType = "APPLICATION/OCTET-STREAM";
                //Response.Flush();
                
                Response.BinaryWrite(btFile);
                //Response.TransmitFile(Server.MapPath("~/ArqTxt/") + nomeArq);
                //Response.WriteFile(Server.MapPath("~/ArqTxt/") + nomeArq);
                //ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "popup", "ShowPopup('Arquivo Baixado!');", true);
                Response.End();

    Mas, quando clico no botão ele não me gera absolutamente nada. O que será que pode estar acontecendo?

    Obrigado!

    quinta-feira, 18 de dezembro de 2014 18:40

Respostas

  • Alisson vc tem que fazer assim :

    1 - cria o arquivo em uma pasta fisica assim 

    WL_nomearquivo = HttpContext.Current.Server.MapPath("~/pasta fisica/nomedo arquivo.txt");

    2 - Para permitir que o usuário baixe o arquivo eu crio um label e dentro dele coloco um link com o caminho do arquivo.

    Lbl_Conteudo.Text += "<td align=" + "center" + "><a href=" + "/pastafisica/nomedoarquivo.txt" +  target=" + "_blank" + " + " + ">" + "Clique aqui com o botão esquerdo e escolha salvar destino como" + "</a></td>";


    Junior

    • Marcado como Resposta Alisson_inf sexta-feira, 19 de dezembro de 2014 10:41
    quinta-feira, 18 de dezembro de 2014 19:40

Todas as Respostas

  • Alisson vc tem que fazer assim :

    1 - cria o arquivo em uma pasta fisica assim 

    WL_nomearquivo = HttpContext.Current.Server.MapPath("~/pasta fisica/nomedo arquivo.txt");

    2 - Para permitir que o usuário baixe o arquivo eu crio um label e dentro dele coloco um link com o caminho do arquivo.

    Lbl_Conteudo.Text += "<td align=" + "center" + "><a href=" + "/pastafisica/nomedoarquivo.txt" +  target=" + "_blank" + " + " + ">" + "Clique aqui com o botão esquerdo e escolha salvar destino como" + "</a></td>";


    Junior

    • Marcado como Resposta Alisson_inf sexta-feira, 19 de dezembro de 2014 10:41
    quinta-feira, 18 de dezembro de 2014 19:40
  • Junior,

    Então está me dizendo que eu não consigo fazer download diretamente. Você teve o mesmo problema que eu?

    Estava tentando não ter que fazer essa gambiarra... As vezes o .Net deixa a gente na mão mesmo! Agradeço pela ajuda!

    Grato!

    sexta-feira, 19 de dezembro de 2014 10:41
  • resolvi de uma forma bem simples kkk estava dentro de um fela updatePanel... eita, por isso que não gosto de webForm... foi só colocar uma trigger:

    <Triggers>                
       <asp:PostBackTrigger ControlID="imgGerarArquivo" />         </Triggers>

    sexta-feira, 19 de dezembro de 2014 17:27