java - 响应头是如何设置的

标签 java jakarta-ee

为什么在 filenotfound 异常之后设置响应头。 从技术上讲, header 仅在获取文件后设置。

try {
    //codes 
    File file = new File(zipDestinationPath);               
    response.setContentType(new MimetypesFileTypeMap().getContentType(file));
    response.setContentLength((int)file.length());
    response.setHeader("content-disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));
    is = new FileInputStream(file);
    FileCopyUtils.copy(is, response.getOutputStream());

}  catch(FileNotFoundException e){
    System.out.println("File Not Found.");
    ServletOutputStream out = null;
    try {
        //i am not setting header here commentedit.
        // response.setHeader("content-disposition", "attachment; filename=" + URLEncoder.encode("Error", "UTF-8"));
        response.setContentType("text/plain;charset=ISO-8859-15");
        out = response.getOutputStream();
        System.out.println(("Invalid file path :" +zipDestinationPath).getBytes());
        out.write(("Invalid file path :" +zipDestinationPath).getBytes());
        out.flush();
        out.close();
    } catch (IOException e2) {
        e2.printStackTrace();
    }
}
catch (Exception e) {
    e.printStackTrace();
}

最佳答案

创建文件不会抛出FileNotFoundException。仅当您创建 FileInputStream 时才会引发 FileNotFoundException,此时您已经设置了 header 。尝试重新排列它,就像

           File file = new File(zipDestinationPath);               
            is = new FileInputStream(file);
            response.setContentType(new MimetypesFileTypeMap().getContentType(file));
            response.setContentLength((int)file.length());
            response.setHeader("content-disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));

关于java - 响应头是如何设置的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29253842/

相关文章:

java - 如何更改 Play Framework 2 "test"设置以显示完整的堆栈跟踪?

java - 使用 RestAssured 将一项列表作为 formParam 发送

java - 如何将 RapidMiner 集成到 PHP Web 应用程序中?

java - Hibernate:从 Java 代码开始数据库布局

java - Jersey 路径分辨率

java - 指定服务返回的字段的最佳方式

java - 使用 Java 计算标准差?

java - 如何为 ArrayStack 实现 toString() 方法?

java - 开发基于 Java EE 的 Web 应用程序时如何提高生产力

eclipse - 将 Java Web EE Netbeans 项目导入 Eclipse