Torna al Thread
Dim MyFile As String = "prova.csv"
'gestisci meglio tu i percorsi, li ho fatti fissi per prova
Dim MyFilePath As String = Path.Combine("c:\inetpub\wwwroot\Utility\", MyFile)
'Esempio: hai un datatable con i dati di una query (lo riempio io con dati random)
Dim dt As New DataTable("prove")
dt.Columns.Add("codice", Type.GetType("System.Int32"))
dt.Columns.Add("descrizione", Type.GetType("System.String"))
Dim dr1 As DataRow = dt.NewRow
dr1("codice") = 1
dr1("descrizione") = "prova1"
Dim dr2 As DataRow = dt.NewRow
dr2("codice") = 2
dr2("descrizione") = "prova2"
Dim dr3 As DataRow = dt.NewRow
dr3("codice") = 3
dr3("descrizione") = "prova3"
dt.Rows.Add(dr1)
dt.Rows.Add(dr2)
dt.Rows.Add(dr3)
Dim sw As New StreamWriter(File.Create(MyFilePath))
'ricorda che il file deve rimanere all'interno della tua web app e che i permessi
'allo IUSR devono essere in scrittura
Dim dr As DataRow
For Each dr In dt.Rows
sw.WriteLine(dr("codice").ToString() & "," & dr("descrizione"))
Next
sw.Close()
'scarico
'ricavo l'oggetto response dal contesto http corrente
Dim objResp As HttpResponse = HttpContext.Current.Response
'imposto il contenttype come "file da scaricare sempre"
objResp.ContentType = "application\octet-stream"
'aggiungo un header che mi consente di scaricare il file come allegato col nome selezionato
objResp.AppendHeader("Content-Disposition", String.Format("Attachment; filename=""{0}""", MyFile))
'scrivo il file via http alla risposta
objResp.WriteFile(MyFilePath)
'chiudo il contesto corrente
objResp.End()