Próbuję wysłać plik 9MB .xls
jako odpowiedź z metody kontrolera web api. Użytkownik kliknie przycisk na stronie, co spowoduje pobranie przez przeglądarkę.Pobierz plik excela ze strony za pośrednictwem wywołania WebApi
Oto, co mam do tej pory, ale to nie działa, ale nie rzuca żadnych wyjątków.
[AcceptVerbs("GET")]
public HttpResponseMessage ExportXls()
{
try
{
byte[] excelData = m_toolsService.ExportToExcelFile();
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new MemoryStream(excelData);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "Data.xls"
};
return result;
}
catch (Exception ex)
{
m_logger.ErrorException("Exception exporting as excel file: ", ex);
return Request.CreateResponse(HttpStatusCode.InternalServerError);
}
}
Oto wywołanie ajax jquery coffeescript/javascript z kliknięcia przycisku w interfejsie.
$.ajax(
url: route
dataType: 'json'
type: 'GET'
success: successCallback
error: errorCallback
)
Teraz, gdy o tym myślę chyba dataType jest złe i nie powinno być json ...
Jak można nazwać metoda? Co to znaczy, że nie działa? Czy sprawdziłeś w skrzypce/firebug/devconsole jak wygląda odpowiedź? – nemesv
czy konieczne jest zwrócenie HttpResponseMessage, czy nie możesz użyć strumienia? – Popeye
Czy próbujesz wysłać plik Excela na stronę, aby użytkownik mógł go pobrać? – Robert