[ASP.NET] string downloaden als .TXT met een downloadvenster

Pagina: 1
Acties:

  • MoNo79
  • Registratie: Juli 2001
  • Laatst online: 21-03 21:47
Beste mensen.

Wat wil ik:
Ik wil een string downloaden als een .txt file. Als ik bv op een button klik wil ik een download venser krijgen en de .txt bestand opslaan.

Wat doet de code nu:
Ik krijg de txt bestand in mijn webbrowser te zien zonder dat ik een download venster krijg.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void Button_Click(object sender, System.EventArgs e)
{
    //Deze sting wil ik downloaden als een .txt
    string stringData = "Download mij";
    byte[] byteData = new byte[stringData.Length];
    // Vul byteData met de stringData
    IEnumerator lijstChars = stringData.GetEnumerator();
    int t = 0;
    while(lijstChars.MoveNext())
    {           
        byteData[t] = Convert.ToByte(lijstChars.Current);
        t++;
    }       
    //Response.ContentType = "application/octet-stream";
    Response.ContentType = "application/x-download";
    Response.AddHeader("Content-Disposition", "filename=bestand.txt");
    Response.OutputStream.Write(byteData,0,byteData.Length);
    Response.End();
}

Ik dacht dat het zo goed was, maar blijkbaar niet B)

[ Voor 4% gewijzigd door MoNo79 op 01-02-2006 13:16 ]


  • Carda
  • Registratie: Juli 2000
  • Laatst online: 12-11-2025
Je header is niet goed, ik programmeer in php maar dat maakt in dit geval nie uit.
Deze headers geef ik mee als ik een pdf will laten downloaden.

header("Content-type: application/pdf");
header("Content-Length: ".strlen(ltrim($contents)));
header("Accept-Ranges: ".strlen(ltrim($contents)));
header("Content-Disposition: attachment;filename=".$filename);

Voornamelijk de eerste en laatste zijn van belang.

Mja ik denk van, lamaar prutsen enzo.. en waarempel soms lukt het ook nog!


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Je bent de
Response.AddHeader("Content-Transfer-Encoding", "Binary");

vergeten.

Ook zou ik FileWrite() gebruiken en niet outputstream.Write omdat daar een memory leak in zit

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • MoNo79
  • Registratie: Juli 2001
  • Laatst online: 21-03 21:47
Carda schreef op woensdag 01 februari 2006 @ 13:21:
Je header is niet goed, ik programmeer in php maar dat maakt in dit geval nie uit.
Deze headers geef ik mee als ik een pdf will laten downloaden.

header("Content-type: application/pdf");
header("Content-Length: ".strlen(ltrim($contents)));
header("Accept-Ranges: ".strlen(ltrim($contents)));
header("Content-Disposition: attachment;filename=".$filename);

Voornamelijk de eerste en laatste zijn van belang.
Geweldig het werkt, erg bedankt

  • MoNo79
  • Registratie: Juli 2001
  • Laatst online: 21-03 21:47
EfBe schreef op woensdag 01 februari 2006 @ 13:27:
Je bent de
Response.AddHeader("Content-Transfer-Encoding", "Binary");

vergeten.

Ook zou ik FileWrite() gebruiken en niet outputstream.Write omdat daar een memory leak in zit
Ja dit werkt ook :), ik wou FileWrite() omdat je het dan eerst moet opslaan op de schijf, en dat wou ik juist niet.

----------edit---------------
Deze had toch geen invloed
Response.AddHeader("Content-Transfer-Encoding", "Binary");

Het ging om deze regel:
Response.AddHeader("Content-Disposition:","attachment;filename=test.txt");

[ Voor 24% gewijzigd door MoNo79 op 01-02-2006 13:37 . Reden: Toevoeging ]


  • Carda
  • Registratie: Juli 2000
  • Laatst online: 12-11-2025
Krijg ik nou een ijsje? :)

Hihi.

Headers zijn heel tricky, en het kan per browser verschillen wat ze er van maken. Als ze de standaard volgen is er niks aan de hand. Maarja.. dat doen ze niet altijd.

Mja ik denk van, lamaar prutsen enzo.. en waarempel soms lukt het ook nog!

Pagina: 1