【问题标题】:File not found when I try to download a .csv file from remote server to local browser当我尝试将 .csv 文件从远程服务器下载到本地浏览器时找不到文件
【发布时间】:2018-04-04 13:02:29
【问题描述】:

我有一个带有 Tomcat 9 的远程 Linux 服务器 (Debian 9.2)。我在服务器上加载了一个生成 .csv 文件的 Web 应用程序,用户可以连接到服务器并下载它。 程序在本地运行时运行良好,但是在远程服务器上运行时,浏览器提示:file not found

这是我的代码:

private void writeFile(String nomeFile, String content, HttpServletResponse response) throws IOException {

     response.setContentType("text/csv");
     response.setHeader("Content-disposition","attachment; filename="+nomeFile);


    String filename=nomeFile;
     try {
     File file = new File(filename);


     FileWriter fw = new FileWriter(file);
     BufferedWriter bw = new BufferedWriter(fw);
     bw.write(content);
     bw.flush();
     bw.close();
     }
     catch(IOException e) {
     e.printStackTrace();
     }


     // This should send the file to browser
     ServletOutputStream out = response.getOutputStream();

    FileInputStream in = new FileInputStream(filename);
     byte[] buffer = new byte[4096];
     int length;
     while ((length = in.read(buffer)) > 0){
        out.write(buffer, 0, length);
     }
     in.close();
     out.flush();



}

我正在尝试调试它,但我不知道错误可能出在哪里。实现代码的 servlet 在 localhost 上运行良好。为什么在远程服务器上会失败?

【问题讨论】:

    标签: java html servlets download remote-server


    【解决方案1】:

    如果您在本地和远程机器上具有相同的代码,并且它在一个机器上工作而在另一个机器上不起作用,则意味着以下两种情况之一:

    1) Tomcat 的本地主机配置可能与远程主机不同 - 这可能会导致 Tomcat 在“不同”文件夹中搜索文件等。或者 2) 文件只存在于本地主机上,不存在于远程主机上。

    【讨论】:

    • 我在服务器中创建文件,然后将其传输到浏览器
    【解决方案2】:

    您可以在 DevTools 中的“网络”选项卡上的浏览器中查看远程服务器获取文件并检查它的请求字符串是什么。 还要检查远程服务器上的上下文。部署项目时,本地主机可能会有所不同。 输入您放置 csv 文件和路径的位置。

    【讨论】:

      猜你喜欢
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      相关资源
      最近更新 更多