发新话题

点击pdf/word等链接时时,直接打开而不是下载的方法

看源代码
<%@ page session="false" pageEncoding="UTF-8"%>
<%@page import="java.io.*"%>
<%
  response.setContentType("application/pdf");

  out.clearBuffer(); // 如果使用JSP,需要加上这一句  
  OutputStream os = response.getOutputStream(); // 页面输出流,jsp/servlet都可以  
  response.addHeader("Content-Disposition", new String(("filename=pattern.pdf")
      .getBytes("GBK"), "ISO-8859-1")); // 针对中文文件名  
  File f = new File(application.getRealPath(".")+"/pattern.pdf"); // 你的文件  
  InputStream is = new FileInputStream(f); // 文件输入流  
  byte[] bs = new byte[1024]; // 读取缓冲区  
  int len;
  while ((len = is.read(bs)) != -1) { // 循环读取  
    os.write(bs, 0, len); // 写入到输出流  
  }
  is.close(); // 关闭  
  os.close(); // 关闭
%>


请注意这一句
response.addHeader("Content-Disposition", new String(("filename=pattern.pdf")
      .getBytes("GBK"), "ISO-8859-1")); // 针对中文文件名  

运行效果


如果要下载的话,就改成
response.addHeader("Content-Disposition", new String(("attachment; filename=pattern.pdf")
      .getBytes("GBK"), "ISO-8859-1")); // 针对中文文件名  


运行效果




这个东西在http协议里面有规定。

顺便说一句,filename是你下载或者另存为时的文件名,必须用iso-8859-1的编码才可以。
2008-12-12_160940.png
2008-12-12_161009.png
快乐渡过每一天,减肥坚持每一天
编辑 回复 快速回复 TOP
学习
编辑 回复 快速回复 TOP
上边那段代码,我测试发现一个问题,如果我打开的中文文件名(实用算法的分析与程序设计.pdf),则可以直接打开,如果是英文文件名(ThinkingInJava.pdf),则弹出IE提示框提示保存,请问是怎么回事?
编辑 回复 快速回复 TOP
如果用户没有安装pdf的话是什么情况
编辑 回复 快速回复 TOP
发新话题