相应中设置Content-disposition

转载https://www.cnblogs.com/brucejia/archive/2012/12/24/2831060.html

    Content-disposition是MIME协议的扩展,MIME协议指示MIME用户代理如何显示附加的文件。当Internet Explorer接收到头时,它会激活文件下载对话框,他的文件名框自动填充了头中指定的文件名(注意,这时设计导致的,无法使用此功能将文档保存到用户计算机上,而不向用户询问保存位置)

     服务器会向客户端浏览器发送文件时,如果时浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt\jpg等,会直接在浏览器中显示,如果需要提示用户保存,就要利用Content-Disposition进行一下处理,关键在于一定要加上attachment.

Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");


Content-Disposition:attachment;filename="filename.xls"

    当然filename参数可以包含路径信息,但是user-agnet会忽略掉这些信息,只会把路径信息的最后一部分作为文件名,当你在相应类型为application/octet-stream情况下使用了这个头信息的话,那就意味着你不想直接显示内容,而是弹出一个文件下载的对话框,接下来就是由你来决定打开还是保存了

注意事项:

1.当代码中使用Content-Disposition来确保浏览器弹出下载对话框的时候,response.setheader("Content-Disposition","attachment");一定要确保没有做过关于禁止浏览器缓存的操作,如下:

response.setHeader("Prama","No-cache");

response.setheader("Cache-Control","No-cache");

response.setDateHeader("Expires",0);

不然会发现下载功能在opera和firefox里面好好的没有问题,在IE下边就是不行,就是找不到文件。

你可能感兴趣的:(javaee)