MVC3 - Wie kann ich eine Datei zum Herunterladen ausgeben, ohne sie vorher auf dem Server zu speichern?

8

In PHP ist es möglich, eine Datei an den Browser zurückzusenden, indem sie mit dem richtigen Header ausgegeben wird. Sie müssen keine vorherige Kopie auf dem Server speichern.

Wenn ich also eine Menge Daten habe, möchte ich als Excel-Datei zurückkehren - wie kann ich die Datei nach dem Erstellen der Datenstruktur mit OpenXML dem Benutzer bereitstellen, ohne sie vorher auf dem Server zu speichern?

    
Extrakun 17.08.2011, 05:01
quelle

3 Antworten

9

Schreiben Sie Ihre Daten in einen Stream und geben Sie sie von Ihrer Controller-Aktionsmethode in FileStreamResult , indem Sie die Eigenschaften FileStream , ContentType und FileDownloadName festlegen.

%Vor%

Aktualisierung: Eine Abkürzung dafür ist die Controller.File () Methode.

%Vor%     
GiddyUpHorsey 17.08.2011, 05:12
quelle
11

Es ist eigentlich ziemlich einfach. In Ihrem Controller können Sie eine Aktion wie folgt ausführen:

%Vor%

Der Benutzer erhält ein Dialogfeld mit der Frage, ob er die Datei öffnen oder speichern möchte.

    
Anthony Queen 21.09.2011 17:16
quelle
2

Sie können den Inhalt Ihrer dynamisch generierten Datei in einem MemoryStream -Objekt speichern. Wenn Sie eine Datei zurückgeben, können Sie mit der Methode GetBuffer() von MemoryStream ein Array von Bytes als ersten Parameter übergeben. Setzen Sie dann die Parameter ContentType und FileDownloadName .

Grüße

    
Husein Roncevic 17.08.2011 05:21
quelle

Tags und Links