文档章节

Java MongoDB : Save image example

引鸩怼孑
 引鸩怼孑
发布于 2015/05/22 12:45
字数 699
阅读 269
收藏 3

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

 

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

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

 

Reference

  1. MongoDB GridFS Specification

本文转载自:http://ysj5125094.iteye.com/blog/2213447

引鸩怼孑
粉丝 45
博文 206
码字总数 16947
作品 0
南京
项目经理
私信 提问
[翻译官方文档]Java Tutorial(Java操作MongoDB入门)

Java Tutorial(Java操作MongoDB入门) Introduction 介绍 This page is a brief overview of working with the MongoDB Java Driver. 这是使用MongoDB java驱动的简单说明。 For more infor......

noday
2011/06/30
0
12
Linux环境下将log4j的日志存储到mongoDB

单位有很多java项目,一般上生产的项目日志都是通过log4j打印在本地,平常开发同学要查看日志还要给他们开个专门的FTP,不利于集中维护管理,近日因工作需要,在网上看到相关技术资料,可把l...

基督山伯爵
2013/03/04
0
3
关于MongoDB-Javascript-Java三者配合数据处理疑问

众所周知MongoDB是天然支持Js的,那么我们在MongoDB中就可以写Js 函数处理一批数据,但目前我是在MongoDB命令台中直接执行Js,所以所得的结果也就存在内存变量中。现在我想让Java把这个内存数...

thankjava
2015/07/24
99
0
【直播回顾】阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库

主讲人:徐雷(阿里云栖特邀Java专家) 徐雷,花名:徐雷frank;资深架构师,MongoDB中文社区联席主席,吉林大学计算机学士,上海交通大学硕士。从事了 10年+开发工作,专注于分布式架构,J...

李博bluemind
03/06
0
0
MongoDB:拥有 RDBMS 特性的 NoSQL 数据存储

如果您正在探索 NoSQL 数据库的世界,则 MongoDB(有时被誉为 NoSQL RDBMS)应在您的清单上获得一个位置。了解所有有关 MongoDB 的自定义 API、交互式 shell、RDBMS 类型动态查询的支持、以及...

红薯
2010/12/14
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

硬件配置

https://akkadia.org/drepper/futex.pdf sudo lshw -businfo[sudo] lambda 的密码: Bus info Device Class Description======================================......

MtrS
56分钟前
2
0
springmvc的return “success”源码解读

qqqq

architect刘源源
今天
4
0
Java程序员五面阿里分享 逆袭成功 太不容易了!

前言 拿到阿里实习offer,经历了5次面试,其中4轮技术面,1轮HR面试。在这里分享一下自己的面试经验和学习心得。希望能够帮助更多的小伙伴。 我本科毕业于中南大学信管专业,真正开始学习Jav...

别打我会飞
昨天
4
0
Android Camera模块解析之视频录制

《Android Camera架构》 《Android Camera进程间通信类总结》 《Android Camera模块解析之拍照》 《Android Camera模块解析之视频录制》 《Android Camera原理之CameraDeviceCallbacks回调模...

天王盖地虎626
昨天
2
0
手把手教你使用issue作为博客评论系统

自从上周在阮一峰的 每周分享第 60 期 看到了可以将 GitHub 的 issue 当作评论系统,插入第三方网页的 JS 库——utterances。我就对此“魂牵梦绕”。个人博客使用的是VuePress。 TLDR (不多废...

jump--jump
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部