none
Baixar arquivo html gerado dinamicamente RRS feed

  • Pergunta

  • Boa noite.

    Tenho um sistema que gera boletos dinamicamente em html. Porém, como faço para gerar o baixar o arquivo para o computador do cliente?

    Estou tentando gerar o arquivo... e salvar no PC do usuário e executar, porém... da erro de permissão.

    Segue como estou tentando gerar:

    string areaTrabalho = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
                            string nome_arquivo = areaTrabalho + "\\" + documento + ".html";
                            if (File.Exists(nome_arquivo))
                            {
                                File.Delete(nome_arquivo);
                            }
                          
                            StreamWriter s = new StreamWriter(nome_arquivo, false, Encoding.Unicode);
                            s.AutoFlush = true;
                            StringBuilder sb = new StringBuilder();
                            sb.Append(arquivoHTML);
                            s.Write(sb.ToString());
                            s.Close();
                            System.Diagnostics.Process.Start(nome_arquivo);


    Jones Palmitos-SC

    • Movido Marcos SJ terça-feira, 13 de outubro de 2015 16:19 Adequação
    terça-feira, 13 de outubro de 2015 02:23

Respostas

  • Jones_RB,

    Como é o seu primeiro sistema web, para publicação, veja o link abaixo, acho que vai lhe ajudar.

    https://msdn.microsoft.com/pt-br/library/dd483479%28v=vs.100%29.aspx?f=255&MSPPError=-2147217396

    Agora para permissão de pasta veja estes links abaixo. Espero que ajude.

    https://msdn.microsoft.com/pt-br/library/bb763173%28v=vs.100%29.aspx

    https://social.msdn.microsoft.com/Forums/pt-BR/ad97a843-5288-4a12-a375-5ddd998a8992/diretrio-como-fao-para-dar-permisso-na-aplicao-para-poder-escrever-em-uma-pasta-no-servidor?forum=webgeralpt

    • Marcado como Resposta Marcos SJ quarta-feira, 14 de outubro de 2015 10:48
    terça-feira, 13 de outubro de 2015 16:47
  • Jones,

    Abaixo segue um link para aprender como ler e escrever um arquivo. Depois disso, você poderá gravar o arquivo e disponibilizar para o usuário baixar.

    http://www.macoratti.net/aspn_txt1.htm

    O link para disponibilizar para o usuário poderá ser assim em HTML:

    <a href="caminho_arquivo">Download</a>

    • Marcado como Resposta Marcos SJ quarta-feira, 14 de outubro de 2015 10:48
    terça-feira, 13 de outubro de 2015 18:43

Todas as Respostas

  • Bom dia Jones,

    Como essa é uma aplicação desktop, é necessário que o usuário da aplicação tenha acesso ao diretório onde você deseja salvar esses arquivos, senão dará erro de escrita mesmo.

    Experimente, para teste, dar acesso completo no diretório e veja se o resultado será positivo.

    Abs.

    Bruno Destro


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx

    terça-feira, 13 de outubro de 2015 10:52
  • Bom dia Jones,

    Como você postou no assunto ASP .NET, será necessário você gerar o arquivo no servidor e disponibilizar como link para o usuário baixar. Mas se for uma aplicação Desktop, faça como o Bruno Destro postou, onde o usuário da aplicação tem que ter acesso a pasta para leitura/escrita.

    Att,
    Cleber N Ramos

    terça-feira, 13 de outubro de 2015 11:37
  • Boa tarde.

    A minha aplicação é web. Porém, o código acima... roda sem problema qdo compilo pelo visual studio... mas qdo publico no servidor e acesso na intranet... não funciona (não da permissão... rsrsrsr)

    Como faria para salvar o arquivo no servidor e em seguida baixar no pc do cliente? Por enquanto estou usando o IIS 7 no proprio pc.

    Obs.: esse é o meu primeiro sistema web em C#. Só havia programado em C# Desktop.

    Obg.


    Jones Palmitos-SC


    • Editado Jones_RB terça-feira, 13 de outubro de 2015 15:49
    terça-feira, 13 de outubro de 2015 15:48
  • Jones_RB,

    Como é o seu primeiro sistema web, para publicação, veja o link abaixo, acho que vai lhe ajudar.

    https://msdn.microsoft.com/pt-br/library/dd483479%28v=vs.100%29.aspx?f=255&MSPPError=-2147217396

    Agora para permissão de pasta veja estes links abaixo. Espero que ajude.

    https://msdn.microsoft.com/pt-br/library/bb763173%28v=vs.100%29.aspx

    https://social.msdn.microsoft.com/Forums/pt-BR/ad97a843-5288-4a12-a375-5ddd998a8992/diretrio-como-fao-para-dar-permisso-na-aplicao-para-poder-escrever-em-uma-pasta-no-servidor?forum=webgeralpt

    • Marcado como Resposta Marcos SJ quarta-feira, 14 de outubro de 2015 10:48
    terça-feira, 13 de outubro de 2015 16:47
  • Blz... já criei a pasta virtual, permissão, etc.

    Agora, como gravar o arquivo nessa pasta para posterior download?

    To aprendendo... rsrsrs


    Jones Palmitos-SC

    terça-feira, 13 de outubro de 2015 18:12
  • Jones,

    Abaixo segue um link para aprender como ler e escrever um arquivo. Depois disso, você poderá gravar o arquivo e disponibilizar para o usuário baixar.

    http://www.macoratti.net/aspn_txt1.htm

    O link para disponibilizar para o usuário poderá ser assim em HTML:

    <a href="caminho_arquivo">Download</a>

    • Marcado como Resposta Marcos SJ quarta-feira, 14 de outubro de 2015 10:48
    terça-feira, 13 de outubro de 2015 18:43
  • Boa tarde!
    Consegui.... no meu PC funcionou certinho. Segue o código:

    protected string uploadArquivo(string arquivo, string nomeArquivo)
            {
                try
                {
                    string arquivoFisico = Server.MapPath("~/Boletos/" + nomeArquivo + ".html");
                    if (File.Exists(arquivoFisico))
                    {
                        File.Delete(arquivoFisico);
                    }
                    StreamWriter s = new StreamWriter(arquivoFisico, false, Encoding.Unicode);
                    s.AutoFlush = true;
                    StringBuilder sb = new StringBuilder();
                    sb.Append(arquivo);
                    s.Write(sb.ToString());
                    s.Close();
                    return DownloadArquivo(arquivoFisico);
                }
                catch (Exception ex)
                {
                    return ex.Message;
                }
            }

            protected string DownloadArquivo(string arquivo)
            {
                try
                {
                    string strURL = arquivo;
                    WebClient req = new WebClient();
                    HttpResponse response = HttpContext.Current.Response;
                    response.Clear();
                    response.ClearContent();
                    response.ClearHeaders();
                    response.Buffer = true;
                    response.AddHeader("Content-Disposition", "attachment;filename=\"" + strURL + "\"");
                    byte[] data = req.DownloadData(strURL);
                    response.BinaryWrite(data);
                    response.End();
                    return "";
                }
                catch (Exception ex)
                {
                    return ex.Message;
                }
            }

    Porém, coloquei para rodar no servidor (win7), não funcionou. Não abre nem o "localhost"... abre em branco.
    Oque pode ser???


    Jones Palmitos-SC

    quarta-feira, 14 de outubro de 2015 16:04