日期:2014-05-17  浏览次数:20970 次

关于 response.setContentType的设置问题
<%@ page language="java" contentType="application/msword; charset=GB2312"
  pageEncoding="GB2312"%>
<meta http-equiv="Content-Type" content="application/msword; charset=GB2312">
我在网页中加了上面这两行,这样可以将网页转换为word文档,并供在客户端下载此word文档。
下面是我从数据库中取出此图像
try { 
  while(rs.next()) { 
  response.setContentType("image/jpeg"); //设置返回的文件类型 

  ServletOutputStream sout = response.getOutputStream(); //声明ServletOutputStream的实例sout
  InputStream in = rs.getBinaryStream(2); //获取二进制输入流
  byte b[] = new byte[0x7a120];// 创建byte数组用作缓冲
  for(int i = in.read(b); i != -1;) 
  { 
  sout.write(b); //输出图像
   
  } 
  sout.flush(); 
  sout.close(); 
  } 
  } 
  catch(Exception e){System.out.println(e);} 
结果在浏览器中浏览时并不生成一个word文档,而是直接是jsp是网页,图像显示在网页上,可能是response.setContentType("image/jpeg");这一句设置了使得网页不能生成word文档。
response.setContentType("image/jpeg");这句删去就可以生成word文档了,但文档中没有图片,也就是说不能生成图片了。
请问如何设置才既可以转换成word,又可以生成图片啊?
谢谢!

------解决方案--------------------
response.setContentType("image/jpeg"); 是设置返回文件的类型,你应该用response.setContentType("application/vnd.ms-word"); 至于你说的图片,我理解是这样:你将图片从数据库里以二进制读出,然后输出到word中,我没有做过,但我认为应该是在输出是处理,以前用过将图片以二进制读出的,忘记了,你查查吧,不是用response.setContentType("image/jpeg")来设置的,好像就是对二进制做了一个什么转换就可以了