jsp能否将二进制文件流写到页面上? InputStream blobStream = cf.getContent().getBinaryStream();//文件内容是从Oracle Blob类型字段里取出来怎样能将这个InputStream 写到页面了向用户展示文件内容? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以写。multipart/form-data指定用流来显示。后台代码的话自己百度下吧。一大堆 设置一下响应格式,应该就可以了,不过必须是jsp支持的格式 “multipart/form-data指定用流来显示”不懂不要装。multipart/form-data是用来从客户端向服务端上传时用的mime.要向页面输出你的binary内容要首选 知道它原来的是什么类型的内容。比如是image还是doc?知道了原来的类型可以输出相应的mime,然后内容直接输出去就行了。 数据是从服务器端的数据库来的,不是从客户端来的。类型是xml或者properties,写到页面的目的就是要让客户看到当前的配置文件的内容。 InputStream blobStream = cf.getContent().getBinaryStream();response.setHeader("Content-Disposition", "attachement;filename=a.xml;");response.setContentType("application/xml;charset=utf-8");byte[] buffer = new byte[10];int nbytes = 0;while ((nbytes = blobStream.read(buffer)) != -1){ out.print(buffer);} blobStream.close();我用的是这段代码,但是输出的是这些东西:[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde而不是xml的内容。 楼主记住的是就是几乎需求都是可以的,只是实现的方式而已,很多时候,可以google, 如果你确信字段中存储的确实是文字,是否可以尝试在blobStream套一个Reader来读字符呢,如Reader reader = new InputStreamReader(blobStream);然后用read()方法读字节,用print写出试试看 你把字节数组当作字符串输出,当然输出的是这个数组的toString方法,当然是[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde这是正确的结果,如果不是这样那就不正常了。要把二进制内容正确输出应该是:InputStream blobStream = cf.getContent().getBinaryStream();response.setHeader("Content-Disposition", "attachement;filename=a.xml;");response.setContentType("application/xml;charset=utf-8");ServletOutputStream out = respone.getOutputStream(); //这前不能有getWriter的调用 byte[] buffer = new byte[10];int nbytes = 0;while ((nbytes = blobStream.read(buffer)) != -1){ out.write(buffer,0,nbytes);} out.flush();blobStream.close(); byte[] buffer = new byte[10];这个缓冲开得也太小了。建立1024*x servlet向 jsp中传递数据 MyEclipse8.5出来啦 求助,怎样解决这个问题?谢谢啦 请教高手达人--网页链接替换文字问题 黔驴技穷!帮!!--续 一个不错的网站哦,不看可别后悔~~ 请求jsp(MVC模式)的经典例子。100分笑纳。 JSP中文问题(分数不够再加) 关于tomcat4.0在iis集成服务的问题 关于JSTL的c:forEach的问题 有关tab标签的问题 ireport中怎么合并单元格啊,就是一列数据中有重复的只显示一个
multipart/form-data指定用流来显示。后台代码的话自己百度下吧。一大堆
不懂不要装。multipart/form-data是用来从客户端向服务端上传时用的mime.
要向页面输出你的binary内容要首选 知道它原来的是什么类型的内容。比如是image还是doc?
知道了原来的类型可以输出相应的mime,然后内容直接输出去就行了。
数据是从服务器端的数据库来的,不是从客户端来的。类型是xml或者properties,写到页面的目的就是要让客户看到当前的配置文件的内容。
response.setHeader("Content-Disposition", "attachement;filename=a.xml;");
response.setContentType("application/xml;charset=utf-8");
byte[] buffer = new byte[10];
int nbytes = 0;
while ((nbytes = blobStream.read(buffer)) != -1){ out.print(buffer);
}
blobStream.close();我用的是这段代码,但是输出的是这些东西:
[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde[B@1f78dde
而不是xml的内容。
Reader reader = new InputStreamReader(blobStream);
然后用read()方法读字节,用print写出试试看
这是正确的结果,如果不是这样那就不正常了。要把二进制内容正确输出应该是:InputStream blobStream = cf.getContent().getBinaryStream();
response.setHeader("Content-Disposition", "attachement;filename=a.xml;");
response.setContentType("application/xml;charset=utf-8");ServletOutputStream out = respone.getOutputStream(); //这前不能有getWriter的调用
byte[] buffer = new byte[10];
int nbytes = 0;
while ((nbytes = blobStream.read(buffer)) != -1){ out.write(buffer,0,nbytes);
}
out.flush();
blobStream.close();