Creare un file txt in una pagina aspx

lunedì 07 settembre 2015 - 17.32
Tag Elenco Tags  VB.NET  |  .NET 4.0

trinity Profilo | Guru

Salve,
io devo leggere dei dati da un db e creare successivamente un file txt con questi dati e far si che l'utente possa scaricare questo file sul proprio computer.

Tempo fa feci già in questo forum una domanda del genere ed un utente mi diede questo esempio nel caso in cui io non volessi mantenere sul server i file txt che creo.

Ecco il codice che mi fornì:

//creo uno stream in memoria, e relativo writer using(MemoryStream stream = new MemoryStream()) using (StreamWriter sw = new StreamWriter(stream)) { //la procedura qui legge i dati dalla sorgente, //e scrive tutto come stringhe nello stream sw.WriteLine("Test"); sw.WriteLine("Test Again"); sw.Flush(); sw.Close(); //ora lo stream è pieno, con i dati letti dal DB //trasformo tutto in byte[] byte[] byteArray = stream.ToArray(); stream.Flush(); stream.Close(); //mando tutto al browser Response.Clear(); Response.AddHeader("Content-Disposition", "attachment; filename=test.txt"); Response.AddHeader("Content-Length", byteArray.Length.ToString()); Response.ContentType = "application/octet-stream"; Response.BinaryWrite(byteArray); Response.Close(); }

solo che non funziona ripete il ciclo 3 volte e non so il perchè e poi re-indirizza ad un errore di pagina del browser...come mai?
Cirillo Fabio
www.trycontact.com
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

Gluck74 Profilo | Guru

Aggiungi un Response.End() alla fine

Altrimenti prova questa soluzione:

byte[] byteArray = stream.ToArray(); var tmpFile = System.IO.Path.GetTempFileName().Replace(".tmp", ".txt"); System.IO.File.WriteAllBytes(tmpFile, byteArray); Response.AppendHeader("content-disposition", "attachment; filename=NewFile.txt"); Response.ContentType = "application/octet-stream"; Response.TransmitFile(tmpFile); Response.End();

fammi sapere
____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

totti240282 Profilo | Guru

Response.TransmitFile(file);

Deve essere

Response.TransmitFile(tmpFile);
C'è solo un capitano !!!!!!

Gluck74 Profilo | Guru

ops....

ho corretto
____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5