Toon posts:

[ASP.NET] HTML Headers komen in te downloade bestand terecht

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een pagina gemaakt waarop mensen een selectie kunnen maken op een persoonsbestand.

Als er op een knop gedrukt wordt dan worden de emailadressen van de gevonden personen als tekstbestand naar de gebruiker verstuurd.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub ButtonEmail_Click(...)
Dim emaillist As String = ""
        Dim Table As DataTable = DataView1.Table
        For Each Row As DataRow In Table.Rows
            emaillist &= Row("Email").ToString + Environment.NewLine
        Next
        Dim textEncoder As New System.Text.ASCIIEncoding
        Dim ByteArray As Byte() = textEncoder.GetBytes(emaillist)
        context.Response.Clear()
        context.Response.AddHeader("Content-Disposition", "attachment; filename=Emailadressen.txt")
        context.Response.AddHeader("Content-Length", ByteArray.Length.ToString())
        context.Response.ContentType = "text/plain"
        context.Response.BinaryWrite(ByteArray)
End Sub


Alleen als er weinig (lees ongeveer tien of minder) adressen in het bestand worden gezet, dan wordt er ook HTML in het bestand gezet.
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
adres@bla.com
adres@bla.com
adres@bla.com
adres@bla.com

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD>
        <title>Medewerkers Informatie</title>
        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
        <meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
        <meta content="JavaScript" name="vs_defaultClientScript">
        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form name="Form1" method="post" action="D


Waarom komt er bij een korte lijst met adressen in eens HTML code achter? en hoe kan ik dit voorkomen?

[ Voor 11% gewijzigd door Verwijderd op 18-05-2004 13:19 ]


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Vraagje: Is die binary write echt nodig? Kan toch gewoon met response.write.

En ik zou voor alle zekerheid ook een Response.End opnemen zodra je klaar bent met schrijven.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:50

gorgi_19

Kruimeltjes zijn weer op :9

bigbeng schreef op 18 mei 2004 @ 13:21:
En ik zou voor alle zekerheid ook een Response.End opnemen zodra je klaar bent met schrijven.
Blijft alleen de vraag of HttpContext.Current.ApplicationInstance.CompleteRequest niet beter is :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Response.write werkt ook.
HttpContext.Current.ApplicationInstance.CompleteRequest werkt ook.

Maar nog steeds zelfde probleem..

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
Dim emaillist As String = ""
        Dim Table As DataTable = DataView1.Table
        For Each Row As DataRow In Table.Rows
            emaillist &= Row("Email").ToString + Environment.NewLine
        Next
        context.Response.Clear()
        context.Response.AddHeader("Content-Disposition", "attachment; filename=Emailadressen.txt")
        context.Response.AddHeader("Content-Length", emaillist.Length.ToString())
        context.Response.ContentType = "text/plain"
        context.Response.Write(emaillist)
        HttpContext.Current.ApplicationInstance.CompleteRequest()

[ Voor 71% gewijzigd door Verwijderd op 18-05-2004 13:48 ]


Verwijderd

Topicstarter
Response.End op het einde heeft probleem opgelost!

Raar dat de manier in dat support article van hierboven het juist in de soep gooit.