java web二进制流的图片如何用response返回给前台
InputStream in = connection.getInputStream();
GZIPInputStream gzin = new GZIPInputStream(in);
FileOutputStream file = new FileOutputStream(new File("F:\\123.gif"));
byte[] bytes = new byte[1024*1024];
int length = 0;
while((length=gzin.read(bytes))!=-1){
file.write(bytes,0,length);
}
file.write(bytes, 0, length);
file.close();
in.close();
以上代码实现了,把网上的一个图片的流拿到,并且写入一个文件中,
现在要实现的是:
把这个图片流用servlet直接返回到前台页面,通过解析在前台JSP页面上把这个图片显示出来
请教如何做! 展开
FileOutputStream很明显你是用的文件流返回的
// 以byte流的方式打开文件 d:\1.gif
FileInputStream hFile = new FileInputStream(url); //得到文件大小
int i=hFile.available();
byte data[]=new byte[i]; //读数据
hFile.read(data); //得到向客户端输出二进制数据的对象
OutputStream toClient=response.getOutputStream(); //输出数据
toClient.write(data);
toClient.flush();
toClient.close();
hFile.close();
扩展资料:
如果是纯文本使用字符流,如果二进制文件,使用字节流。
如果只是得到信息,原样不动,不进行修改操作,例如文件上传和下载,这时就使用字节流。文件上传:在服务器端把浏览器端信息提取出来。文件下载:把服务器端内容写给浏览器端。
如果要操作的是自定义信息,这时使用字符流。
通过response获取的输出流它的真实类型是什么?
ServletOutputStream response.getOutputStream();
PrintWriter response.getWriter();
ServletOutputStream由于使用字节流多数是原样复制,所以使用write方法,而不是print方法。
PrintWriter:打印流,两个特点:1.可以设置自动刷新。2.可以将信息原样输出。
很明显你是用的文件流返回的
// 以byte流的方式打开文件 d:\1.gif
FileInputStream hFile = new FileInputStream(url);
//得到文件大小
int i=hFile.available();
byte data[]=new byte[i];
//读数据
hFile.read(data);
//得到向客户端输出二进制数据的对象
OutputStream toClient=response.getOutputStream();
//输出数据
toClient.write(data);
toClient.flush();
toClient.close();
hFile.close();
response.getOutputStream().write(bytes);
response.flush()