客户端浏览器从服务器获取excel文件管理器并下载到loacal机器。
以下是服务器端向客户端发送响应的代码:
public ActionResult GetExcel(int month, int year)
{
var workbook = CreateWorkSheet1.WriteExcelWithNPOI();
using (var exportData = new System.IO.MemoryStream())
{
Response.Clear();
workbook.Write(exportData);
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", "ContactNPOI.xlsx"));
Response.BinaryWrite(exportData.ToArray());
Response.End();
}
return View(workbook);
}
这是我在客户端的javascript代码,它从上面的服务器方法获得结果:
$scope.downloadFile = function(){
return $http.get("../WsAvivim/SaveToClientDepartmentRepotr/GetExcel?" + "year=" + $scope.year + "&month=" + $scope.month).then(function (response) {
var f = response.data;
var ref = document.createElement("a");
ref.href = "data:" + f.ContentType + ";base64," + f.FileContents;
ref.download = f.FileDownloadName;
ref.click();
});
正如您在上面的示例中所见,javascript从服务器获取结果并尝试保存excel文件。文件已保存。
但是当它保存在浏览器上时,它看起来像这样:
正如你在上面的图片中看到的那样,出了问题,文件无法打开。
知道我的代码有什么问题吗?为什么文件无法正常保存?