【发布时间】:2013-02-12 11:48:25
【问题描述】:
我正在尝试发送一个 9MB .xls 文件作为来自 web api 控制器方法的响应。用户将点击页面上的一个按钮,这将通过浏览器触发下载。
这是我到目前为止所得到的,但它不起作用,但它也不会引发任何异常。
[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);
}
}
这是通过界面中的按钮单击来调用coffeescript/javascript jquery ajax。
$.ajax(
url: route
dataType: 'json'
type: 'GET'
success: successCallback
error: errorCallback
)
现在想来可能是dataType不对,不应该是json……
【问题讨论】:
-
你怎么称呼你的方法?不起作用是什么意思?你在 fiddler/firebug/devconsole 中检查过响应的样子吗?
-
是否需要返回 HttpResponseMessage ,可以不用stream吗?
-
您是否尝试将 excel 文件发送到页面以便用户下载?
标签: c# asp.net excel asp.net-web-api xls