2016-03-23 15 views
0

Ich weiß, es gibt eine Menge Fragen über das Herunterladen und Exportieren von Dateien von einer asp.net-Website, aber sie alle am Ende mit der gleichen Antwort. Meine Website bietet Benutzern die Möglichkeit, Dateien herunterzuladen und Daten in eine Excel-Tabelle zu exportieren. Derzeit ich die Lösung jeden verwende scheint, die wie folgt aussieht zu bieten:ASP.net herunterladen/exportieren ohne HttpContext

public void ExcelExport(System.Data.DataTable dtData, String strFileName) 
{ 
    try 
    { 
     HttpContext.Current.Response.Clear(); 
     HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + strFileName); 
     HttpContext.Current.Response.ContentType = GetMIMEType(Path.GetExtension(strFileName)); 

     HttpContext.Current.Response.Write(BuildStringWriter(dtData)); 
     HttpContext.Current.Response.Flush(); 
     HttpContext.Current.Response.Close(); 
    } 
    catch (Exception ex) 
    { 
     throw new Exception("ExcelExport() Failed: " + ex.Message); 
    } 
} 

Dies ist die Methode, die ich zu Exportdaten nenne, und meine Download-Methode ist fast identisch. Das Problem ist, dass ich keinen Spinner oder eine wartende Nachricht anzeigen kann, weil ich keine Möglichkeit habe, einen zu schließen, sobald der Export/Download abgeschlossen ist. Es gibt noch weitere Aufgaben, die ich nach dem Export/Download ausführen möchte, aber derzeit kann ich das nicht.

Also meine Frage ist: Gibt es eine andere Möglichkeit für meinen Kunden, Dateien herunterzuladen und Daten zu exportieren, ohne HttpContext zu verwenden? Außerdem würde ich lieber nicht auf eine DLL verweisen, die ich herunterladen müsste.

Dank

+1

ist die Excel eine xls-Datei exportieren oder es kann eine csv sein? Wenn es ein csv sein kann und Sie Seitendaten verwenden, um nach Excel zu exportieren, können Sie es leicht Clientseite tun. Eine andere Sache, die Sie tun können, ist nur die Bytes an den Client zu senden und sie Client-Seite zu verarbeiten. – Rick

+0

Um klar zu sein, es ist nicht HttpContext, mit dem Sie ein Problem haben. Eher schließt/beendet sie die Antwort. – mason

+0

@Rick Die Exportdatei ist ein xls. Ich arbeite an einer anderen Möglichkeit, die Daten zu exportieren, aber mein Problem bleibt für Dateien, die meine Kunden herunterladen müssen. Ich muss sicherstellen, dass der Export und der Download auf so vielen Browsern funktioniert, dass ich mich nicht auf das Download-Attribut verlassen kann. Ich bin nicht vertraut mit dem Konvertieren der Dateien/Daten in Bytes und das Senden an die Clientseite, aber ich werde das untersuchen. Danke für die Antwort. – KyleS

Antwort

1

Jeder HTTP-Request haben nur eine HTTP-Antwort, Sie können wählen, ob Sie es wollen Seite ein Datei-Download oder eine andere Web.

Verwenden oder nicht HttpContext haben nichts damit zu tun.

Das heißt, Sie den Benutzer zu einer Download-Seite umleiten, die den Download nach x Anzahl der Sekunden auslöst (wie die meisten Download-Sites zu tun)

+0

Danke für die Antwort. Ich habe versucht, Benutzer auf eine andere Seite umzuleiten, um den Download zu handhaben, aber ich hatte Probleme mit dieser Methode in IE. Ich kann mich nicht erinnern, was das Problem war, aber ich erinnere mich, dass mein Chef mir sagte, dass er die Art, wie er sich verhielt, nicht mochte und die aktuelle Methode bevorzugte. Es ist möglich, dass ich etwas falsch gemacht habe, also werde ich mich wieder darum kümmern müssen. Danke auch für das Aufräumen meines Missverständnisses von HttpContext. – KyleS

Verwandte Themen