要写转换函数\
<%@ include file="../share/setup.jsp" %>
<%@ page import = "com.guomao.util.*"%>
<%!
public static String toUtf8String(String s) {
StringBuffer sb = new StringBuffer();
for (int i=0;i<s.length();i++) {
    char c = s.charAt(i);
    if (c >= 0 && c <= 255) {
sb.append(c);
    } else {
byte[] b;
try {
    b = Character.toString(c).getBytes("utf-8");
} catch (Exception ex) {
    System.out.println(ex);
    b = new byte[0];
}
for (int j = 0; j < b.length; j++) {
    int k = b[j];
    if (k < 0) k += 256;
    sb.append("%" + Integer.toHexString(k).
    toUpperCase());
}
    }
}
return sb.toString();
}
%>
<%  // 得到文件名字和路径
  String filename = CTools.dbToWeb(request.getParameter("filename"));
  String path=CTools.dbToWeb(CTools.transfer(request.getParameter("path")));
  String filepath ="../" + BASEDIR + path+"/";
  // 设置响应头和下载保存的文件名
  String CONTENT_TYPE = "text/html; charset=GBK";
  response.setContentType(CONTENT_TYPE);
  response.setContentType("APPLICATION/OCTET-STREAM");
  //System.out.println(filename+filepath);
  response.setHeader("Content-Disposition","attachment; filename=\"" + toUtf8String(filename) + "\"");  // 打开指定文件的流信息
  java.io.FileInputStream fileInputStream =
   new java.io.FileInputStream( filepath + filename);  // 写出流信息
  int i;
  while ((i=fileInputStream.read()) != -1) {
   response.getOutputStream().write(i);
  }
  fileInputStream.close();
  response.getOutputStream().close();
 %>

解决方案 »

  1.   

    非常感谢你的回复。
    不过我确定不是中文文件名的问题,我用中文名的word文档也试过了的,可以打开,没有任何问题。
    文件流的方法我也试过,结果是一样的。
    我在网上查过资料,用我的方法是可以打开PPT的,不知道是不是我的IE设置不对。
      

  2.   

    在web.xml中加:
    <mime-mapping> 
    <extension>ppt</extension> 
    <mime-type>application/mspowerpoint</mime-type> 
    </mime-mapping>