Web-API-Rückgabe csv-Datei
Ich brauche, um eine csv-Datei aus der web-api-controller. Ich kann nicht "Speichern unter" - dialog zu zeigen. Nur-text-Ausgabe zeigt sich auf der Seite. Ich habe versucht beide, den Aufruf Export von jquery und auch plain old html
Controller:
[System.Web.Http.HttpGet]
public HttpResponseMessage Export()
{
StringBuilder sb = new StringBuilder();
IEnumerable<CustomerDiscount> list = this.subscriberRepository.GetSubscribers();
foreach (CustomerDiscount item in list)
{
sb.AppendFormat(
"{0};{1};{2};",
item.CustomerName,
item.CustomerNumber,
Environment.NewLine);
}
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
writer.Write(sb.ToString());
writer.Flush();
stream.Position = 0;
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType =
new MediaTypeHeaderValue("text/csv");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "Export.csv" };
return result;
}
BEARBEITEN:
Hinzugefügt dieser Zeile:
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "Export.csv" };
immer noch nicht funktioniert
Ich nenne es so:
<a id="export" href="/Relay/Billing/Export" class="btn btn-primary">Export</a>
und auch versucht es so:
$("#export").click(function () {
$.post("/Relay/Billing/Export", { type: $("#discountType").val() })
.done(function (data) {
});
});
Immer noch kein Speichern Als " - box
- möglich, Duplikat der Wie zu setzen herunterladen der Datei-name in ASP.NET MVC-Web-API
- Ich bin ein wenig verwirrt. Eine typische web-api oder restful-services-JSON zurückgeben (oder irgendeine Art von Serialisierung). Ich nehme an, Ihr Verbraucher ist nicht ein web-browser?
- Versuchen Sie diese Zeile vor der Rückkehr Ergebnis:
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "some.csv" };
- Wenn Sie wollen, um eine Methode aufzurufen, die gibt eine CSV-Datei, die Sie werden viel besser mit ein standard-MVC-controller. Web-API verwendet wird, für die Rückgabe von Daten (in der Regel) wo Sie als Controller den Inhalt zurückgeben. Ich würde sagen, eine CSV-Datei (vor allem die Art und Weise Ihre Berufung ist es) ist der Inhalt nicht Daten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, ob das richtige Protokoll, aber das ist, wie ich es Tat, bevor. So haben Sie eine web-Seite, von der aus Sie ruft eine API zur Verfügung, die Antwort mit der Datei und es sollte behandelt werden, indem der browser "speichern unter" - dialog.
HTML:
Aktion:
Dieser arbeitet bei mir sowohl in Chrome und Firefox neueste.
result.Content = new StringContent("Hello, World!");