为啥通过MSIE判断浏览器信息
生活随笔
收集整理的这篇文章主要介绍了
为啥通过MSIE判断浏览器信息
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
看到这么一段代码:
@RequestMapping(value="/download")public ResponseEntity<byte[]> download(HttpServletRequest request,@RequestParam("filename") String filename,@RequestHeader("User-Agent") String userAgent,//这里之所以需要请求头,是因为请求头中包含浏览器信息Model model)throws Exception{// 下载文件路径String path = request.getServletContext().getRealPath("/upload/");System.out.println("path="+path);// 构建FileFile file = new File(path+File.separator+ filename);// ok表示Http协议中的状态 200BodyBuilder builder = ResponseEntity.ok();// 内容长度builder.contentLength(file.length());// application/octet-stream : 二进制流数据(最常见的文件下载)。builder.contentType(MediaType.APPLICATION_OCTET_STREAM);// 使用URLDecoder.decode对文件名进行解码filename = URLEncoder.encode(filename, "UTF-8");// 设置实际的响应文件名,告诉浏览器文件要用于【下载】、【保存】attachment 以附件形式// 不同的浏览器,处理方式不同,要根据浏览器版本进行区别判断if (userAgent.indexOf("MSIE") > 0){// 如果是IE,只需要用UTF-8字符集进行URL编码即可builder.header("Content-Disposition", "attachment; filename=" + filename);}else{// 而FireFox、Chrome等浏览器,则需要说明编码的字符集// 注意filename后面有个*号,在UTF-8后面有两个单引号!builder.header("Content-Disposition", "attachment; filename*=UTF-8''" + filename);}return builder.body(FileUtils.readFileToByteArray(file));}}
为啥这个视图函数中包含了User-Agent这种请求头呢?貌似删除后也可以正常运行啊。
这是因为请求头中包含了浏览器信息。
这里的MSIE的意思是:Microsoft Internet Explorer.
if (userAgent.indexOf("MSIE") > 0)
这句代码的意思是:
判断请求头的浏览器信息中包含IE浏览器的信息。
总结
以上是生活随笔为你收集整理的为啥通过MSIE判断浏览器信息的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: springboot抑制log中的inf
- 下一篇: HTML 文档的字符编码未声明。如果该文