0

我已经完成了使用 spring 和 hibernate 开发的 java web 应用程序。在我的应用程序中,有一个下载功能。该功能在 windows env 上运行良好。但是当我在 linux env 上部署和运行应用程序时,使用 Tomcat 作为服务器,该函数返回零字节文件。文件类型为 excel (xls)。但浏览器将其返回为 pdf 文件。

下载功能失败:

下载失败

Linux 上的 Xls 文件路径: xls

这是代码:

@RequestMapping("downloadXlsTemplate")
public String downloadTemplate(HttpServletRequest request, HttpServletResponse response) {

    try {           

        String filename = "Template.xls";

        File onLinux  = new File("/opt/tomcat7/webapps/xls/" + filename); 

        response.setContentType("application/vnd.ms-excel");
        response.addHeader("Content-Disposition", "attachment; filename=" + filename);
        response.setContentLength((int) onLinux.length());

        InputStream inputStream  = new FileInputStream(onLinux);

        OutputStream responseOutputStream = response.getOutputStream();
        int bytes;
        while((bytes = inputStream.read()) != -1) {
            responseOutputStream.write(bytes);
        }
        inputStream.close();
        responseOutputStream.close();

    } catch (IOException e) {
        e.printStackTrace();
    }   
    return null;
}

我尝试了各种方法,但都没有成功。我将非常感谢任何想法、帮助或解决方案

问候尤努斯

4

2 回答 2

0

如果是权限问题,请尝试使用 chmod unix 命令授予文件所需的权限。

例如,chmod u+rwx

作为一个好的做法,尝试使用相对路径(使用类路径资源)而不是绝对路径(因此它与环境无关)来引用文件。

于 2013-10-31T13:06:31.193 回答
0

您面临的问题是文件权限问题。该文件归“root”所有,您的 tomcat 在其他用户上运行。

尝试将文件移动到 tomcat 用户可以访问的共享位置。尝试该/tmp位置或任何其他共享位置。

于 2013-10-31T12:04:38.883 回答