文件下载直接在浏览器显示内容

最近做一个文件上传下载的功能,其中出了一些小问题,记录一下:

问题:下载功能做好了,我点击下载,然后页面上直接就把文件打开了,而不是在页面底部弹出一个下载提示框:

想要的效果是像上面这样不直接打开文件,,百度了诸多方案,最后找到了一个可行的办法:

在你写的下载的那个控制器方法里面加个参数:HttpServletResponse response

然后在调用下载前加一句话: response.addHeader("Content-Disposition","attachment; filename="+filePath);

然后就达到了我想要的效果,其中,filePath 就是你上传时候的文件名字,这里要换成你自己的。

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

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

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

备注:这样浏览器会提示保存还是打开,即使选择打开,也会使用相关联的程序比如记事本打开,而不是IE直接打开了。

上面是查的相关资料,在我这里,用的是谷歌浏览器,并没有提示保存还是打开,而是直接就下载保存了。

猜你喜欢

转载自blog.csdn.net/qq_33378853/article/details/86478815