从Spring MVC应用程序中的浏览器下载文件

时间:2017-02-22 19:46:02

标签: java spring-mvc download freemarker

我需要从Spring MVC应用程序下载csv文件。我有我需要包含在文件中的数据。我需要在浏览器会话中动态创建文件并将其下载到用户系统。我尝试过这里提到的解决方案:Downloading a file from spring controllers

我无法生成csv,它正在服务器上查找文件。

到目前为止我做了什么:

客户端电话:

$.ajax({
        type: "GET",
        url:"${ctx}/emp/getAttendance?empId=" + emp +"&fileName=" + file,
        success: function (data) {
            $('#result_loading').hide();
        }
    });

服务器端:

    String path = req.getServletContext().getRealPath("");
    File file = new File(path + "/" + fileName);
    file.createNewFile();
    FileInputStream inputStream = new FileInputStream(file);
    resp.setContentType("application/pdf");
    resp.setHeader("content-disposition;","attachment;filename=\"download.pdf\"");
    OutputStream outputStream = resp.getOutputStream();
    IOUtils.copy(inputStream, outputStream);
    outputStream.close();

我需要Ajax调用来下载文件。我甚至看不到下载的空文件。

有人可以帮助我解决我做错的问题。

1 个答案:

答案 0 :(得分:1)

您可以使用spring框架中的FileSystemResource类 该类存在于位置

org.springframework.core.io.FileSystemResource

使用java.io.File类创建csv文件,然后将文件对象的值传递给构造函数

,将数据写入文件(在物理服务器上)
FileSystemResource(File file)

并将其返回浏览器,一旦加载了网址,浏览器将自动打开下载窗口。

初始化文件系统资源后删除文件,就像从未创建过文件一样好。