mongodb中GridFSDBFile保存文档到数据后,如何获取文档内容?不是输出到磁盘。

anycalllvp 2014-06-24 02:39:51
mongodb中GridFSDBFile保存文档到数据后,如何获取文档内容?

程序如下;
oid=ObjectId.massageToObjectId(strObjectId);
GridFSDBFile gfs=mongoService.getById(oid);
根据ID读取一个保存在数据库的文档记录,里面保存了一个实际文件,例如是一个WORD文档。在db.fs.files.find()可以查到。

根据上面的程序,System.out.println("输出MD5:"+gfs.getMD5()); 这样可以取该文件的一些属性,例如文件名,MD5值,ID值等。
但是我想直接取该文件的内容?该如何取?暂时没发现有GET属性可以直接取文档内容。
输出文件内容可以做到。例如:gfs.writeTo(System.out); 但是输出乱码,不知道如何解决。就算不乱码,也获取不到这个输出的内容,也就是捕获这个输出流的内容。 gfs.writeTo(File f); 这样子可以重新生成该文档在磁盘,打开没有乱码。

现在就是想把这个文档的内容,在程序里面获取,不要直接输出为文件,获取后 赋值给一个字符串变量,这样能否做到?
这样做的原因是想在程序里面分析保存文档的内容。最主要的是想把文档的内容进行分词。
如果在保存之前就进行分析,这样要分析文档的后缀名,因为TXT\DOC\CVS\PDF很多后缀名的输入流不一样,很明显一个例子:我获取TXT就很正常,但是DOC文件就乱码,每个后缀名都分析获取,也不现实,所以就想直接保存后在数据库获取文件内容进行分析。另外,还想在分词的时候获取保存在数据库里面的ID,这样容易定位。

分数不多了,希望有大牛可以解答一下.
...全文
3283 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
你说深蓝不蓝 2016-12-20
  • 打赏
  • 举报
回复
同问!楼主快回来解答啊!
mk900715 2016-11-14
  • 打赏
  • 举报
回复
我想知道楼主最后怎么解决了
姬永杰 2016-09-27
  • 打赏
  • 举报
回复
out为从GridFSDBFile 返回的outputstream ByteArrayOutputStream baos=new ByteArrayOutputStream(); baos=(ByteArrayOutputStream) out; ByteArrayInputStream swapStream = new ByteArrayInputStream(baos.toByteArray()); try { BufferedReader br = new BufferedReader(new InputStreamReader(swapStream,"gbk")); String temp = ""; String s = ""; while((temp = br.readLine()) != null) { s = s + temp+"\r"; } System.out.println(s); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
1993Smile 2015-11-17
  • 打赏
  • 举报
回复
我想知道,最后是怎么解决这个问题的?
anycalllvp 2014-06-25
  • 打赏
  • 举报
回复
[ 仔细看了看你的问题。其实你自己很明白你的问题啊。各种格式的文件编码不同,你想分析文件中的内容,就是要不同类型的文件不同对待。就是要分析后缀名。数据库只是存储而已,不会改变文件编码。doc的你就是要利用word的相应类库来分析。不可能存到数据库以后就可以不分格式的获取文件内容。 ] =========================================================================================== 感谢楼上两位。但是我还是想搞明白一样东西,竟然文档内容保存在GridFS里面了,也可以用输出流的方式输出了,那么也应该可以有方法获取到里面的内容啊?就算是编码不一样,那么我在获取的时候再进行转码就可以了。有一点不明白的是:保存到数据库的程序,输出到控制台就乱码(writeTo(system.out)),但是同样是用writeTo()方法,写到磁盘的文件(writeTo(File f))里面再打开就正常,这里面也没有进行过转码啊,这点确实不理解。最重要的是怎样在JAVA里面获取到GridFS的文档内容? 也是刚开始学MONGODB,就用来做了这么一个文档系统,好多东西不是很明白。希望大牛可以分析分析。
anycalllvp 2014-06-25
  • 打赏
  • 举报
回复
自己再顶顶,不要沉了
yinlidong99 2014-06-24
  • 打赏
  • 举报
回复
仔细看了看你的问题。其实你自己很明白你的问题啊。各种格式的文件编码不同,你想分析文件中的内容,就是要不同类型的文件不同对待。就是要分析后缀名。数据库只是存储而已,不会改变文件编码。doc的你就是要利用word的相应类库来分析。不可能存到数据库以后就可以不分格式的获取文件内容。
anycalllvp 2014-06-24
  • 打赏
  • 举报
回复
没人理, 自己顶顶。
适用人群IT从业相关人群,0~10年工作经验者课程概述【技术选型】  SpringBoot2.x+MongoDB4.x+Vue均选用能进行生产环境部署的稳定版本【开发模式】前后端分离开发,即当前端又当后端,分角色开发【课程受益】一次上手,即学即会,提供全套源代码,直接可以运行【技术介绍】MongoDB目前NoSql最流行的数据库,互联网的必备神器,目前最新的版本4.x;本课程针对4.x进行搭建和讲解;MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当功能最丰富,最像关系数据库的。MongoDB(来自于英文单词“Humongous”,文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。作为一个适用于敏捷开发的数据库,MongoDB数据模式可以随着应用程序的发展而灵活地更新。MongoDB是专为可扩展性,高性能和高可用性而设计的数据库。它可以从单服务器部署扩展到大型、复杂的多数据心架构。利用内存计算的优势,MongoDB能够提供高性能的数据读写操作。 MongoDB的本地复制和自动故障转移功能使您的应用程序具有企业级的可靠性和操作灵活性

1,747

社区成员

发帖
与我相关
我的任务
社区描述
MongoDB相关内容讨论区
社区管理员
  • MongoDB社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧