$scope.getExcel = function () { $http.post("/production/statistics/export", { storeId: $scope.$parent.currStore.storeId, date: $scope.$parent.ledgerDate.getTime() }, {responseType: "blob"}).success(function (data) { var blob = new Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}); var fileName = $scope.$parent.currStore.name + "_生产统计_" + $scope.$parent.ledgerDate.Format("yyyy-MM-dd"); var a = document.createElement("a"); document.body.appendChild(a); a.download = fileName; a.href = URL.createObjectURL(blob); a.click(); }) }重点在于客户端设置请求头
responseType: "blob"
并且服务端返回的是二进制数据流.
客户端接收后转换为指定文件格式的blob,最后创建blob对象的URL 把它放在A标签的href上 就会自动下载了