none
Stream Writer + Memory Stream RRS feed

  • Pergunta

  • Bom dia amigos

    Criei um sistema q gera um txt para o usuário mas no momento esta sendo salvo em um diretório.

    estou tentando atraves do código abaixo fazer com que apareça em forma de download mas não funciona.

    MemoryStream memStream = new MemoryStream();
                    ImpIr = new StreamWriter(memStream);
                    //dados do arquivo
                    impIr.Write("")......
    //no final do arquivo
     ImpIr.Flush();


                    StreamReader stream_reader = new StreamReader(memStream);
                    memStream.Seek(0, SeekOrigin.Begin);
                    return memStream;


    Rafael Soares Desenvolvedor Web (Java,.NET) Desenvolvedor Mobile(Windows Phone 7, Android)

    segunda-feira, 27 de fevereiro de 2012 14:32

Todas as Respostas

  •  
      Bom dia!!

          Você precisa adicionar os cabeçalhos no response para o browser fazer o download do arquivo, segue um exemplo:
     string arquivo = Server.MapPath("nome do arquivo");
     FileInfo info = new FileInfo(arquivo);
                    Response.Clear();
                    Response.ContentType = "application/octet-stream";
                    Response.AddHeader("Accept-Header", info.Length.ToString());
                    Response.AddHeader("Content-Disposition", "attachment; filename=\"" + info.Name + "\"");
                    Response.TransmitFile(info.FullName);
                    Response.Flush();

    Espero ter lhe ajudado!! Se lhe ajudou marque como resposta, pois assim essa thread ficará como respondida e ajudará outros usuários!! Obrigado!!

    Thiago Rogerio
    www.thiagorogerio.com.br
    thiagorogeriobr@hotmail.com

    segunda-feira, 27 de fevereiro de 2012 14:47
  • Thiago

    então segui conforme o exemplo mas o "Server"e response como objeto não tem, desculpe mas não entendi essa parte


    Rafael Soares Desenvolvedor Web (Java,.NET) Desenvolvedor Mobile(Windows Phone 7, Android)

    segunda-feira, 27 de fevereiro de 2012 16:43
  •  Olá!

       Seu aplicativo não é asp.net / c#??  Quais using você tem no code-behind?

    Thiago Rogerio
    www.thiagorogerio.com.br
    thiagorogeriobr@hotmail.com

    segunda-feira, 27 de fevereiro de 2012 17:07
  • é em c# sim

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Configuration;
    using System.Web;
    using System.Net;


    Rafael Soares Desenvolvedor Web

    segunda-feira, 27 de fevereiro de 2012 17:19
  • meu exemplo ficou assim seguindo oq vc disse


    public static void ForceDownload(this HttpResponse Response, string virtualPath, string fileName)
            {

                Response.Clear();
                Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
                Response.WriteFile(virtualPath);
                Response.ContentType = "";
                Response.End();

            }


    Rafael Soares Desenvolvedor Web

    segunda-feira, 27 de fevereiro de 2012 17:22
  • após ultimo ajuste.... ocorre uma exception de referencia null após p Response.clear()

    string arquivo = HttpContext.Current.Server.MapPath("~/Impressão/texto.txt");
                FileInfo info = new FileInfo(arquivo);
                Response.Clear();
                Response.ContentType = "application/octet-stream";
                Response.AddHeader("Accept-Header", info.Length.ToString());
                Response.AddHeader("Content-Disposition", "attachment; filename=\"" + info.Name + "\"");
                Response.TransmitFile(info.FullName);
                Response.Flush();


    Rafael Soares Desenvolvedor Web

    segunda-feira, 27 de fevereiro de 2012 17:46