none
Salvando arquivos gerados pelo servidor RRS feed

  • Pergunta

  • Boa Tarde

    Criei um app que gera um arquivo txt na pasta local C:

    agora com a publicação no servidor de desenvolvimento ele gera o arquivo no c: do servidor

    Como posso fazer para que após criar o arquivo txt pelo servidor de desenvolvimento ele salve este arquivo no c: do cliente?


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

    quinta-feira, 9 de fevereiro de 2012 16:05

Respostas

  • Boas Rafael,

    Assumindo que a tua aplicação é ASP.NET a solução é:

    1. criar e manter o ficheiro em memória
    2. usar o método HttpContext.Current.Response.BinaryWrite para escrever o ficheiro pata a OutputStream
    3. Alterar o HttpContext.Current.Response.ContentType para o tipo correcto (exemplo: "application/ms-excel")
    4. Adicionar o header Content-Disposition através de
    5. HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", this.FileName));
    6. Terminar o pedido HttpContext.Current.Response.End() (notar que terminar abruptamente o pedido não é recomendavel pois interrompe o ciclo de vida do Request)

    Tipicamente este processo realiza-se num HttpHandler e não numa página por questões de performance.


    Nuno Gomes http://nunogomes.net

    • Marcado como Resposta RafaChoks sexta-feira, 10 de fevereiro de 2012 18:05
    quinta-feira, 9 de fevereiro de 2012 17:26

Todas as Respostas

  • é em asp.net ?

    Para fazer isso dai você vai ter que criar um app WindowsForms, com o asp.net você não tem acesso a máquina do "cliente" ...

    abs


    Vittor Borges

    quinta-feira, 9 de fevereiro de 2012 16:44
  • Boas Rafael,

    Assumindo que a tua aplicação é ASP.NET a solução é:

    1. criar e manter o ficheiro em memória
    2. usar o método HttpContext.Current.Response.BinaryWrite para escrever o ficheiro pata a OutputStream
    3. Alterar o HttpContext.Current.Response.ContentType para o tipo correcto (exemplo: "application/ms-excel")
    4. Adicionar o header Content-Disposition através de
    5. HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", this.FileName));
    6. Terminar o pedido HttpContext.Current.Response.End() (notar que terminar abruptamente o pedido não é recomendavel pois interrompe o ciclo de vida do Request)

    Tipicamente este processo realiza-se num HttpHandler e não numa página por questões de performance.


    Nuno Gomes http://nunogomes.net

    • Marcado como Resposta RafaChoks sexta-feira, 10 de fevereiro de 2012 18:05
    quinta-feira, 9 de fevereiro de 2012 17:26
  • Nuno,

    isso dai nao vai salvar o arquivo no c: , vai abrir a janela de download !!!


    Vittor Borges

    quinta-feira, 9 de fevereiro de 2012 17:33
  • Exacto ... e o utilizador guarda o ficheiro onde quiser.

    Aqui não há mesmo magia ... o acto de gravar terá que ser sempre uma acção do utilizador.


    Nuno Gomes http://nunogomes.net

    quinta-feira, 9 de fevereiro de 2012 19:33
  • Valeu Man ! realmente sendo asp.net dessa forma ficou como queria valeu!

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

    sexta-feira, 10 de fevereiro de 2012 18:05