Java MongoDB : Save image example

Java MongoDB : Save image example

In this tutorial, we show you how to save an image file into MongoDB, via GridFS API. The GridFS APIs are able to serve other binary files as well, like video and music files.

译:在本教程中,我们将向你展示如何通过 GridFS API 保存一个图片到MongoDB。GridFS APIs 提供将其他二进制文件的支持,比如视频和音频等。

Note
For detail explanation, read this MongoDB GridFS manual.

译:详细解释,请阅读MongoDB GridFS文档.

1. Save image

Code snippets to save an image file into MongoDB, under “photo” namespace, and assign a new “filename” for the saved image.

译:下面代码片断为保存一个图片文件到MongoDB,在"photo"命名空间下,将图片文件取一个新名保存。

Java代码  

  1. String newFileName = "mkyong-java-image";
  2. File imageFile = new File("c:\\JavaWebHosting.png");
  3. GridFS gfsPhoto = new GridFS(db, "photo");
  4. GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile);
  5. gfsFile.setFilename(newFileName);
  6. gfsFile.save();

2. Get image

Code snippets to get the saved image by its “filename”.

译:下面代码片断,根据文件名,获取保存的图片。

Java代码  

  1. String newFileName = "mkyong-java-image";
  2. GridFS gfsPhoto = new GridFS(db, "photo");
  3. GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName);
  4. System.out.println(imageForOutput);

Output, the image is saved as following JSON format.

Json代码  

  1. {
  2. "_id" :
  3. {
  4. "$oid" : "4dc9511a14a7d017fee35746"
  5. } ,
  6. "chunkSize" : 262144 ,
  7. "length" : 22672 ,
  8. "md5" : "1462a6cfa27669af1d8d21c2d7dd1f8b" ,
  9. "filename" : "mkyong-java-image" ,
  10. "contentType" :  null  ,
  11. "uploadDate" :
  12. {
  13. "$date" : "2011-05-10T14:52:10Z"
  14. } ,
  15. "aliases" :  null
  16. }

3. Print all saved images

Code snippets to get all the saved files from MongoDB and iterate it with DBCursor.

译:下面代码片断,从MongoDB中获取所有保存的文件,并用数据库游标迭代输出。

Java代码  

  1. GridFS gfsPhoto = new GridFS(db, "photo");
  2. DBCursor cursor = gfsPhoto.getFileList();
  3. while (cursor.hasNext()) {
  4. System.out.println(cursor.next());
  5. }

4. Save into another image

Code snippets to get an image file from MongoDB and output it to another image file.

译:下面代码片断,从MongoDB中获取一个图片文件并输出(生成另一个图片)。

Java代码  

  1. String newFileName = "mkyong-java-image";
  2. GridFS gfsPhoto = new GridFS(db, "photo");
  3. GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName);
  4. imageForOutput.writeTo("c:\\JavaWebHostingNew.png"); //output to new file

5. Delete image

Code snippets to delete an image file.

译:下面代码片断,删除一个图片文件。

Java代码  

  1. String newFileName = "mkyong-java-image";
  2. GridFS gfsPhoto = new GridFS(db, "photo");
  3. gfsPhoto.remove(gfsPhoto.findOne(newFileName));

Full Example

Full example to work with image, via Java MongoDB GridFS API. See comments for explanation.

注:运行程序之前,一定要在C盘创建“c:\\JavaWebHosting.png"图片文件。

Java代码  

  1. package com.mkyong.core;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.net.UnknownHostException;
  5. import com.mongodb.DB;
  6. import com.mongodb.DBCollection;
  7. import com.mongodb.DBCursor;
  8. import com.mongodb.Mongo;
  9. import com.mongodb.MongoException;
  10. import com.mongodb.gridfs.GridFS;
  11. import com.mongodb.gridfs.GridFSDBFile;
  12. import com.mongodb.gridfs.GridFSInputFile;
  13. /**
  14. * Java MongoDB : Save image example
  15. *
  16. */
  17. public class SaveImageApp {
  18. public static void main(String[] args) {
  19. try {
  20. Mongo mongo = new Mongo("localhost", 27017);
  21. DB db = mongo.getDB("imagedb");
  22. DBCollection collection = db.getCollection("dummyColl");
  23. String newFileName = "mkyong-java-image";
  24. File imageFile = new File("c:\\JavaWebHosting.png");
  25. // create a "photo" namespace
  26. GridFS gfsPhoto = new GridFS(db, "photo");
  27. // get image file from local drive
  28. GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile);
  29. // set a new filename for identify purpose
  30. gfsFile.setFilename(newFileName);
  31. // save the image file into mongoDB
  32. gfsFile.save();
  33. // print the result
  34. DBCursor cursor = gfsPhoto.getFileList();
  35. while (cursor.hasNext()) {
  36. System.out.println(cursor.next());
  37. }
  38. // get image file by it‘s filename
  39. GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName);
  40. // save it into a new image file
  41. imageForOutput.writeTo("c:\\JavaWebHostingNew.png");
  42. // remove the image file from mongoDB
  43. gfsPhoto.remove(gfsPhoto.findOne(newFileName));
  44. System.out.println("Done");
  45. } catch (UnknownHostException e) {
  46. e.printStackTrace();
  47. } catch (MongoException e) {
  48. e.printStackTrace();
  49. } catch (IOException e) {
  50. e.printStackTrace();
  51. }
  52. }
  53. }

At the end of the program, a new image file is created in “c:\\JavaWebHostingNew.png“.

译:执行程序之后,会创建一个新的图片文件“c:\\JavaWebHostingNew.png“。

Reference

  1. MongoDB GridFS Specification
时间: 2024-10-08 10:09:54

Java MongoDB : Save image example的相关文章

那位帮忙提供一个java mongodb多个collection进行mapreduce的操作。

原文:那位帮忙提供一个java mongodb多个collection进行mapreduce的操作. 代码下载地址:http://www.zuidaima.com/share/1550463227890688.htm 我想统计下每个月某个视频的播放量,需要跨日表去mapreduce. 那位帮忙提供一个java mongodb多个collection进行mapreduce的操作.,布布扣,bubuko.com

【MongoDB数据库】Java MongoDB CRUD Example

上一篇我们讲了MongoDB 的命令入门初探,本篇blog将基于上一篇blog所建立的数据库和表完毕一个简单的Java MongoDB CRUD Example,利用Java连接MongoDB数据库.并实现创建数据库.获取表.遍历表中的对象.对表中对象进行CRUD操作等例程. 1.下载MongoDB Java 支持驱动包 [gitHub下载地址]https://github.com/mongodb/mongo-java-driver/downloads 2.建立Javaproject,并导入ja

java MongoDB查询(二)复杂查询

前言 在上篇<java MongoDB查询(一)简单查询>中我们简单了解了下查询,但是仅仅有那些查询是不够用的,还需要复杂的查询,这篇就这点进行叙述. 1.数据结构 集合:firstCollection 数据内容: { "_id" : ObjectId("55adba52fa1f3cf038c2aea6"), "name" : "user0", "age" : 22, "sex&quo

java MongoDB分页优化

最近项目在做网站用户数据新访客统计,数据存储在MongoDB中,统计的数据其实也并不是很大,1000W上下,但是公司只配给我4G内存的电脑,让我程序跑起来气喘吁吁...很是疲惫不堪. 最常见的问题莫过于查询MongoDB内存溢出,没办法只能分页查询.这种思想大家可能都会想到,但是如何分页,确实多有门道! 网上用的最多的,也是最常见的分页采用的是skip+limit这种组合方式,这种方式对付小数据倒也可以,但是对付上几百上千万的大数据,却只能望而兴叹... 经过网上各种查找资料,寻师问道的,发现了

MongoDB save()方法和insert()方法的区别

MongoDB save()方法和insert()方法的区别 首先看官方文档怎么说的 Updates an existing document or inserts a new document, depending on its document parameter save方法有更新和插入两种功能,到底是插入还是更新文档取决于save的参数.那么到底是依赖于哪个参数呢?继续看 If the document does not contain an _id field, then the sa

Java mongodb api疑问之MongoCollection与DBCollection

在学习Java mongodb api时发现,可以调用不同的java mongodb api来连接数据库并进行相关操作. 方式一: 该方式使用mongoClient.getDB("xxx")来获取DB对象,然后通过getCollection("xxx")获取相应的集合.其他操作略. import com.mongodb.BasicDBObject; import com.mongodb.DBCollection; import com.mongodb.DBObjec

spring java mongodb geo 位置搜索服务 示例

1.配置 pom.xml,在原有的spring项目中添加以下2个即可. <span style="white-space:pre"> </span><!-- mongo db 驱动--> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3

Java MongoDB Driver 3.x - Quickly Start

Maven Dependency: <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.2.2</version> </dependency> Make a Connection The following example shows five ways to conn

java MongoDB查询(一)简单查询

前言 MongoDB的java驱动提供了查询的功能,查询条件也是bson对象,这篇就看下怎么进行简单的数据查询 1.数据结构 集合:firstCollection 数据内容: { "_id" : ObjectId("55adba52fa1f3cf038c2aea6"), "name" : "user0", "age" : 22, "sex" : 0 } { "_id"