我在服务器上有文件,我想使用浏览器将其下载到我的机器上。但是我没有从浏览器中获得下载文件的选项。
我的代码是
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}
});
};
Controller
@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();
}
}
我没有遇到任何异常,但不确定为什么浏览器对话框未打开以下载文件。还有它到底在哪里下载文件?
最佳答案
@SotiriosDelimanolis 是对的。无法使用 ajax 请求下载文件。
只需使用 'window.location'
。
$scope.downloadFile = function(fileName) {
window.location.href = 'logreport/downLoadFile?fileName=asdad1';
};
关于java - 如何使用spring mvc在浏览器中下载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23775503/