java - 如何使用spring mvc在浏览器中下载文件?

标签 java javascript spring-mvc

我在服务器上有文件,我想使用浏览器将其下载到我的机器上。但是我没有从浏览器中获得下载文件的选项。

我的代码是

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/

相关文章:

java - 以编程方式添加 SwitchCompat 错误

java - 访问 .jar API 函数 - 错误 : Cannot make a static reference to the non-static method

JavaScript (ES6) : Named parameters and default values

java - 为什么 ModelAtribute 作为 null 传递?

java - 如何使用 Spring MVC Jackson 拦截 HttpServletRequest

java - ReSTLet 响应类型

java - 如何为现有项目构建 Gradle?

java - 使用 Spring Boot 从数据库检索列表

javascript - 如何禁用 d3 对数刻度中的小刻度?

javascript - 使用 Javascript 收集鼠标在 Canvas 上的位置