首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

,关于servlet输出图象的有关问题

2012-01-03 
求助,关于servlet输出图象的问题我这样写:publicvoiddoGet(HttpServletRequestrequest,HttpServletRespons

求助,关于servlet输出图象的问题
我这样写:

public   void   doGet(HttpServletRequest   request,   HttpServletResponse   response)throws   ServletException,   IOException   {

response.setHeader( "Pragma ",   "no-cache ");
response.setHeader( "Cache-Control ",   "no-cache ");
response.setDateHeader( "Expires ",   0);
response.setContentType( "image/jpeg ");

ServletOutputStream   sos   =   response.getOutputStream();
BufferedImage   bi=ImageIO.read(new   File( "imageNotFound.jpg "));
File   f   =   new   File( "abc.jpg ");  

ImageIO.write(bi, "JPG ",sos);
ImageIO.write(bi, "JPG ",f);
sos.close();
}

输入6.41k的jpeg图片
输出到文件里变成2.56k的jpeg图片
输出到ServletOutputStream里,却变为了25.8k的bmp图片

请问为什么啊?怎么解决?谢谢

[解决办法]
不要用Image,直接用FileInputStream读入后写出到你的sos里面去。
[解决办法]
try this.没有测试过,以前也没有写过
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setHeader( "Pragma ", "no-cache ");
response.setHeader( "Cache-Control ", "no-cache ");
response.setDateHeader( "Expires ", 0);
response.setContentType( "image/jpeg ");

ServletOutputStream sos = response.getOutputStream();
FileInputStream bis = new FileInputStream(new File( "imageNotFound.jpg ")));

Byte c;
while((c=bis.readByte()) != -1)
sos.write(c);
}
bis.close();
sos.close();

热点排行