【发布时间】:2014-07-09 15:24:33
【问题描述】:
我在服务器上有文件,我想使用浏览器在我的机器上下载。但我没有从浏览器中获得下载文件的选项。
我的代码是
JSP
<div id="jqgrid">
<table id="grid"></table>
<div id="pager"></div>
</div>
JS
jq("#grid").jqGrid({
....
onCellSelect: function(rowid, index, contents, event) {
...
var fileName = jQuery("#grid").jqGrid('getCell',rowid,'fileName');
$scope.downloadFile(fileName);
}
});
$scope.downloadFile = function(fileName) {
$http({
url: "logreport/downLoadFile",
method: "GET",
params: {"fileName": fileName}
});
};
控制器
@RequestMapping(value = "/downLoadFile", method = RequestMethod.GET)
public void downLoadFile(HttpServletRequest request, HttpServletResponse response) {
try {
String fileName = request.getParameter("fileName");
File file = new File(filePath +"//"+fileName);
InputStream in = new BufferedInputStream(new FileInputStream(file));
response.setContentType("application/xlsx");
response.setHeader("Content-Disposition", "attachment; filename="+fileName+".xlsx");
ServletOutputStream out = response.getOutputStream();
IOUtils.copy(in, out);
response.flushBuffer();
} catch (Exception e) {
e.printStackTrace();
}
}
我没有收到任何异常,但不确定为什么浏览器对话框没有打开以下载文件。还有它到底在哪里下载文件?
【问题讨论】:
-
那么您尝试过调试它吗?在没有任何具体错误的情况下,我们所能做的就是猜测发生了什么。
-
您无法通过 javascript ajax 请求下载文件。
-
您确定可以在控制器中检索
fileName吗? -
@suninsky 是的,我正在获取文件名。
-
@SotiriosDelimanolis 为什么不可能?我在控制器中获取文件名。
标签: java javascript spring-mvc