Domanda

Qual è il modo migliore per implementare, da una pagina web, un'azione di download utilizzando asp.net 2.0?

I file di registro per un'azione vengono creati in una directory denominata [Application Root]/Logs.Ho il percorso completo e desidero fornire un pulsante che, se cliccato, scaricherà il file di registro dal server IIS al PC locale dell'utente.

È stato utile?

Soluzione

Questo aiuta:

http://www.west-wind.com/weblog/posts/76293.aspx

Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition","attachment; filename=logfile.txt");
Response.TransmitFile( Server.MapPath("~/logfile.txt") );
Response.End();

Response.TransmitFile è il modo accettato per inviare file di grandi dimensioni, anziché Response.WriteFile.

Altri suggerimenti

http://forums.asp.net/p/1481083/3457332.aspx

string filename = @"Specify the file path in the server over here....";
FileInfo fileInfo = new FileInfo(filename);

if (fileInfo.Exists)
{
   Response.Clear();
   Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
   Response.AddHeader("Content-Length", fileInfo.Length.ToString());
   Response.ContentType = "application/octet-stream";
   Response.Flush();
   Response.TransmitFile(fileInfo.FullName);
   Response.End();
}


Aggiornamento:

Il codice iniziale

Response.AddHeader("Content-Disposition", "inline;attachment; filename=" + fileInfo.Name);

ha "inline;attachment" cioèdue valori per Disposizione contenuto.

Non so quando sia iniziato esattamente, ma in Firefox soltanto il nome file corretto non veniva visualizzato.Viene visualizzata la casella di download del file con il nome della pagina Web e la sua estensione (nomepagina.aspx).Dopo il download, se lo rinomini con il nome effettivo;il file si apre correttamente.

Come da questa pagina, funziona Primo arrivato, primo servito.Modificando il valore in attachment ha solo risolto il problema.

PS:Non sono sicuro che questa sia la procedura migliore, ma il problema è stato risolto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top