0

我已经像这样使用 gridFS 将文件保存到 mongoDB 中。

    Mongo mongo = new Mongo("XXXXX", XXXX);
    DB db = mongo.getDB("XXX");
    GridFS fs = new GridFS(XXX);

    File install = new File("C:\\Users\\Nabeel\\Desktop\\docs.txt");
    GridFSInputFile inFile = fs.createFile(install);
    inFile.save();

现在我想使用 spring MVC 下载该文件。由于gridFS已将文件转换为二进制文件,因此我无法找到有关如何取回文件的示例。

一个示例代码会很好,因为我对这一切都很陌生。

提前谢谢你

4

1 回答 1

1

您可以为服务文件执行以下操作:

public void downloadFile(String videoId , HttpServletResponse response ) {
    InputStream is = null;  

    ApplicationContext ctx = new AnnotationConfigApplicationContext(MongoDBConfiguration.class);
    GridFsOperations gridOperations = (GridFsOperations) ctx.getBean("YourBeanName");

    List<GridFSDBFile> result = gridOperations.find(new Query().addCriteria(Criteria.where("_id").is(videoId)));

    for (GridFSDBFile file : result) {
        try {
            /* send file */
        } catch (Exception e) {
            response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
        }
    }

}

在此处发送文件示例:如何使用 Spring MVC 返回视频,以便可以使用 html5 <video> 标签对其进行导航?

这个关于视频服务的链接,但它可以给你一个想法。使用链接中的方法 2 和 GridFSDBFile 的 getInputStream() 方法。

于 2016-07-13T12:31:54.513 回答