web项目中的一个jsp文件中,有一pdf的链接,想实现点击该链接后,能够提示打开或保存,而不是直接打开。请帮忙给出方法。
smartupload据说对文件大小有限制;
使用中转页面的方法,请给出中转页面的代码,谢谢!

解决方案 »

  1.   

    这个所谓的PDF链接是一个真正在war中存在的pdf文件吗?如果是真正存在的文件,你可以修改web.xml,增加一段
        <mime-mapping>
            <extension>pdf</extension>
            <mime-type>application/octet-stream</mime-type>
        </mime-mapping>
    这样强制让类型改变了如果是JSP、Servlet生成的PDF,那你写
    response.setHeader("Content-Disposition", "attachment;filename=xxx");就可以。
      

  2.   

    pdf不是通过程序生成的,而是已经存在的pdf文件
      

  3.   

    To ChDw:你的方法试过了,还是不行!
    在项目的web.xml中加入了
    <mime-mapping>
      <extension>pdf</extension>
      <mime-type>application/pdf</mime-type>
    </mime-mapping>或是
    <mime-mapping>
      <extension>pdf</extension>
      <mime-type>application/octet-stream</mime-type>
    </mime-mapping>都不行,还是直接打开!
      

  4.   

    response的property或者head设置:("Content-Type", "application/octet-stream");
      

  5.   

    To ChDw:我知道要去掉空格,可是的确不行。我使用了中转页面,现在解决了。<%@ page language="java"%>
    <%@ page import="java.util.*,java.io.*"%>
    <%
    String  filepath="";
    String  filename="";
    filepath = request.getParameter("filepath");
    filename = request.getParameter("filename");
    response.setHeader("Content-Type","application/pdf");
    response.setHeader("Content-Disposition","attachment;filename="+filename);
    response.setHeader("Connection","close");
    ServletOutputStream  sos=response.getOutputStream();
    FileInputStream    fis= new  FileInputStream(filepath+filename);
    byte b[]=new byte[1000];
    int j; 
    while((j=fis.read(b))!=-1){sos.write(b,0,j);}
    fis.close(); 
    sos.flush();
    sos.close();
    %>   
      

  6.   

    To liang8305 :如果使用"application/octet-stream",保存后pdf文件是打不开的,应该是格式变了吧。