Ich versuche, eine CSV -Datei aus der Ferne herunterzuladen, indem ich einen WCF -Dienst mit JQuery anruft. Da die Datei nicht auf dem Server liegt, habe ich versucht, sie als Stream zurückzugeben. Da ich den Inhaltsdisposition < /code> Header verwende, sollte der Browser des Clients automatisch mit dem Herunterladen der Datei mit einem bestimmten Dateinamen beginnen.[OperationContract()]
public Stream GetCsvFile(int id)
{
string s = ...;
WebOperationContext.Current.OutgoingResponse.ContentType = "text/csv";
WebOperationContext.Current.OutgoingResponse.Headers["Content-Disposition"] = "attachment; filename=\"file1.csv\"";
return GenerateStreamFromString(s);
}
public Stream GenerateStreamFromString(string s)
{
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
writer.Write(s);
writer.Flush();
stream.Position = 0;
return stream;
}
< /code>
Meine jQuery AJAX -Anforderung: < /p>
$.ajax({
type: "POST",
url: serviceUrl,
cache: false,
data: data,
dataType: "text",
contentType: "application/json; charset=utf-8",
success: function() {
// TODO...
}
});
< /code>
Diese Anfrage wird erfolgreich abgeschlossen! Und ich kann die richtigen CSV -Daten in der Antwort sehen. Es wird jedoch keine tatsächliche Aktion "Datei download" im Browser initiiert (Testen auf Chrome) und "Datei1.csv" wird nicht auf der Festplatte des Clients gespeichert.Response.Clear()
Response.ContentType = "text/csv"
Response.AddHeader("content-disposition", "attachment; filename="file1.csv")
Response.Write(s)
Response.End()
< /code>
Dies würde automatisch eine Datei herunterladen "file1.csv". Kein "speichern als" würde sogar angezeigt, die Datei würde einfach sofort herunterladen. Es war ziemlich cool. < /P>
Wie kommt es also nicht>
Wie lade ich eine Datei von einem WCF -Dienststrom herunter? ⇐ C#
-
- Similar Topics
- Replies
- Views
- Last post