社区
Web 开发
帖子详情
jsp能否将二进制文件流写到页面上?
tongshushan
2010-08-23 12:50:40
InputStream blobStream = cf.getContent().getBinaryStream();//文件内容是从Oracle Blob类型字段里取出来
怎样能将这个InputStream 写到页面了向用户展示文件内容?
...全文
288
11
打赏
收藏
jsp能否将二进制文件流写到页面上?
InputStream blobStream = cf.getContent().getBinaryStream();//文件内容是从Oracle Blob类型字段里取出来 怎样能将这个InputStream 写到页面了向用户展示文件内容?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tongshushan
2010-08-23
打赏
举报
回复
[Quote=引用 1 楼 chouy 的回复:]
设置一下输出的文字类型,然后输出就行了.
就像请求图片那样.
[/Quote]
就像请求图片那样 是什么意思?
商科程序员
2010-08-23
打赏
举报
回复
设置一下输出的文字类型,然后输出就行了.
就像请求图片那样.
axman
2010-08-23
打赏
举报
回复
byte[] buffer = new byte[10];这个缓冲开得也太小了。建立1024*x
axman
2010-08-23
打赏
举报
回复
你把字节数组当作字符串输出,当然输出的是这个数组的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();
magong
2010-08-23
打赏
举报
回复
[Quote=引用 7 楼 tongshushan 的回复:]
InputStream blobStream = cf.getContent().getBinaryStream();
[/Quote]
如果你确信字段中存储的确实是文字,是否可以尝试在blobStream套一个Reader来读字符呢,如
Reader reader = new InputStreamReader(blobStream);
然后用read()方法读字节,用print写出
试试看
sebatinsky
2010-08-23
打赏
举报
回复
楼主记住的是就是几乎需求都是可以的,只是实现的方式而已,很多时候,可以google,
tongshushan
2010-08-23
打赏
举报
回复
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的内容。
tongshushan
2010-08-23
打赏
举报
回复
[Quote=引用 5 楼 axman 的回复:]
“multipart/form-data指定用流来显示”
不懂不要装。multipart/form-data是用来从客户端向服务端上传时用的mime.
要向页面输出你的binary内容要首选 知道它原来的是什么类型的内容。比如是image还是doc?
知道了原来的类型可以输出相应的mime,然后内容直接输出去就行了。
[/Quote]
数据是从服务器端的数据库来的,不是从客户端来的。类型是xml或者properties,写到页面的目的就是要让客户看到当前的配置文件的内容。
axman
2010-08-23
打赏
举报
回复
“multipart/form-data指定用流来显示”
不懂不要装。multipart/form-data是用来从客户端向服务端上传时用的mime.
要向页面输出你的binary内容要首选 知道它原来的是什么类型的内容。比如是image还是doc?
知道了原来的类型可以输出相应的mime,然后内容直接输出去就行了。
Sharesin
2010-08-23
打赏
举报
回复
设置一下响应格式,应该就可以了,不过必须是jsp支持的格式
simaa0106
2010-08-23
打赏
举报
回复
可以写。
multipart/form-data指定用流来显示。
后台代码的话自己百度下吧。一大堆
Struts1 上传
二进制
流
NULL 博文链接:https://sd8089730.iteye.com/blog/933239
js 显示base64编码的
二进制
流网页图片
base64简单地说,它把一些 8-bit 数据翻译成标准 ASCII 字符,我们把图像
文件
的内容直接写在了HTML
文件
中,这样做的好处是,节省了一个HTTP 请求
Ajax发送和接收
二进制
字节流数据的方法
主要介绍了Ajax发送和接收
二进制
字节流数据的方法,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
pdf.js使用
文件
流预览pdf
网上大部分pdf.js都是用url方式预览pdf,此处给出pdf.js使用
文件
流预览pdf的Web工程; 此是maven工程; 100%能运行;
查询mysql数据库中的
二进制
图片数据,并全部显示出来
查询mysql数据库中的
二进制
图片数据,并全部显示出来,很简单的例子,有两个
jsp
文件
Web 开发
81,122
社区成员
341,744
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章