【发布时间】:2015-04-10 05:17:56
【问题描述】:
我有一个填充数据的 NG-GRID。 用户选择了一些行并尝试将其导出。在导出的报告中只能看到这些行。
正在做的方法/设计是:
- 将选定的行值发送到服务器
- 被调用的 servlet 从客户端获取行信息并处理 XLS 文件,并在响应中添加文件和标题的所有这些详细信息以供文件下载。
-
调用 servlet 的函数正在返回接收到的数据。 下面是在 ng-click() 上调用的下载函数 下载数据servlet正在创建文件并在响应中写入文件和头的数据。
$scope.download = function() { $scope.downloadText="正在准备文档..."; $scope.isDownloadDisabled=true; return ($http.post('./DownloadData',mySelections).success( 功能(数据、状态、标题、配置) { $scope.downloadText="下载"; $scope.isDownloadDisabled=false; console.log("我在这里") 返回数据; }) ); }
但我没有看到正在下载的数据。虽然标题是正确的。
这是在服务器上执行的功能代码:
private void processData(HttpServletRequest request, HttpServletResponse response) throws ServletException
{
try
{
Map<String, Map<String, String>> loadedData = getTableDataForRequest(request);
if (loadedData == null || loadedData.size() == 0)
{
log.error("Exception no data generated for exporting");
throw new ServletException();
}
else
{
XLSDataWriter xlsDataWriter = new XLSDataWriter(loadedData);
String pathToGeneratedFile = getServletContext().getRealPath("resources");
pathToGeneratedFile = pathToGeneratedFile.substring(0, pathToGeneratedFile.indexOf("resources"));
pathToGeneratedFile += "generatedFiles" + File.separator;
File file = xlsDataWriter.writeDataToXls(pathToGeneratedFile);
response.setContentType("application/vnd.ms-excel");
response.setHeader("content-disposition", "attachment; filename=" + file.getName());
OutputStream outStream = response.getOutputStream();
byte[] buffer = new byte[4096];
int bytesRead = -1;
FileInputStream inStream = new FileInputStream(file);
while ((bytesRead = inStream.read(buffer)) != -1)
{
outStream.write(buffer, 0, bytesRead);
}
inStream.close();
log.info("Full file path : " + file.getAbsolutePath());
}
}
catch (Exception ex)
{
log.error("Exception while fetching the download data", ex);
}
}
请帮帮我,我已经被困了很多天了。
【问题讨论】:
标签: javascript html css angularjs