Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Chrome不遵守内容处置附件指令_Java_Google Chrome_Browser_Content Disposition - Fatal编程技术网

Java Chrome不遵守内容处置附件指令

Java Chrome不遵守内容处置附件指令,java,google-chrome,browser,content-disposition,Java,Google Chrome,Browser,Content Disposition,应用程序的预期行为是提示用户输入下载位置,同时提供默认文件名,该文件名在IE&FF中非常有效,但Chrome总是自动将其强制到下载目录 我知道chrome在设置>高级>“下载前询问保存每个文件的位置”中有一个选项。该选项的缺点是它适用于所有页面,而我测试过的其他项目,我们希望遵循内联行为,因此这些情况彼此直接冲突 我四处搜索,但找不到任何明确的说法,说明这在Chrome中是可能的还是不可能的,但我发现奇怪的是,Chrome不遵守一个已经存在了这么长时间并附加了多个RFC的行为,而Chrome一直

应用程序的预期行为是提示用户输入下载位置,同时提供默认文件名,该文件名在IE&FF中非常有效,但Chrome总是自动将其强制到下载目录

我知道chrome在设置>高级>“下载前询问保存每个文件的位置”中有一个选项。该选项的缺点是它适用于所有页面,而我测试过的其他项目,我们希望遵循内联行为,因此这些情况彼此直接冲突

我四处搜索,但找不到任何明确的说法,说明这在Chrome中是可能的还是不可能的,但我发现奇怪的是,Chrome不遵守一个已经存在了这么长时间并附加了多个RFC的行为,而Chrome一直被宣传为非常符合标准。 以下是根据Chrome开发工具在浏览器中接收头的方式

HTTP/1.1 200 OK    
Content-Type: application/vnd.ms-powerpoint    
Content-Disposition: attachment; filename="presentation.ppt"    
Content-Language: en-US    
Transfer-Encoding: chunked
Date: Tue, 13 Jan 2015 19:18:27 GMT
Server: WebSphere Application Server/7.0
下面是设置头服务器端的代码

public void generatePowerPoint(HttpSession session, HttpServletResponse response){
    String id = (String) session.getAttribute(ApplicationConstants.ID);
    SlideShow ppt = reportService.generatePowerPoint(id);
    try{
        StringBuilder sb = new StringBuilder();
        sb.append("presentation_").append(id).append(".ppt");

        response.setContentType("application/vnd.ms-powerpoint");
        response.setHeader("Content-Disposition", "attachment; filename=\"" + sb.toString()+ "\"");
        OutputStream out = response.getOutputStream();
        ppt.write(out);
        out.flush();
        out.close();
    }
    catch(IOException e) {
        logger.error("The ppt could not be generated: ", e);
    }
}

有人有什么意见吗?不可能吗?解决办法?如果您需要更多详细信息,请告诉我。

内容配置:附件意味着另存为附件;不一定提示在哪里保存。我看不出Chrome的行为有什么问题


此外,nit:如果文件名包含非ASCII字符,代码将生成断开的标题字段。

感谢您的响应。我对这种情况下的依恋行为表示怀疑。我读取的方式和具有dispotion头的文件的行为是使用另存为对话框进行提示。我发现唯一有趣的一点是关于MIME类型的问题,特别是应用程序/八位字节流与附件的结合也应该是这样的。可能Chrome没有运行,因为我的类型被设置为application/vnd.ms-powerpoint只是为了完整性;将标题更改为内容类型:application/octet stream并没有改变Chrome.hey@munkyxtc中的行为您的尝试成功了吗?我也有同样的问题:(@MuthuRaman我从来没有像之前那样解决过这个问题。在阅读了很多关于这个主题的文章后,这似乎是一个失败的原因。默认情况下,Chrome会将它保存到他们的下载目录中。Chrome中有一个设置,可以在每次保存到何处时提示用户,但因为我无法访问每台计算机,也不想让每一次下载都进行提示该设置毫无价值。我只是选择允许浏览器将其解释为已配置。在去年发布后,更多浏览器似乎遵循相同的排序逻辑。即使是新版本的IE也会自动下载该设置。