如何将GridFSFile对象写入ByteArrayOutputStream对象?

时间:2018-08-08 20:30:14

标签: java spring mongodb outputstream gridfs

有一个简单的方法可以使用gridFSDBFile来实现,但是现在已经不复存在了。

//This used to return a GridFSDBFile type. Returns GridFSFile now.
GridFSFile gridFsFile = gridFsTemplate.findOne(new Query(Criteria.where("_id").is(idTemp)));
//And would be done this way. Not anymore.
gridFSFile.writeTo(outputstream)

主要目标是返回保存在数据库中的图像,以将其显示在html页面上,如下所示。

response.getOutputStream().write(outputstream.toByteArray());
response.getOutputStream().close();

2 个答案:

答案 0 :(得分:0)

我可能迟到了,但是您可以将InputStream链接到OutputStream。

因此您可以使用以下内容:

GridFSFile gridFsFile = gridFsTemplate.findOne(...);
gridFsTemplate.getResource(gridFsFile).getInputStream().transferTo(outputStream);

答案 1 :(得分:0)

在将Spring 1.x迁移到2.x时遇到相同的问题。解决方法是这里。

InputStream iStream =  gridFsTemplate.getResource(gridFSFile).getInputStream();

byte[] bytes = IOUtils.toByteArray(iStream);