Java 程序保存图片,文件到 MongoDB 数据库

摘要: MongoDB 与传统的关系型数据库一样能保存图片或文件到数据库,不过操作的方法有点特殊,它借助了 GridFS 来保存文件到数据库,比如图片,视频,音乐等文件都可以。关于GridFS 的介绍,可以参考这里:http://docs.mongodb.org/manual/core/gridfs/, 一般来说对文件册操作主要包括以下几方面:1. 保存文件到mongoDB.2. 获取所有的文件列表3. 从MongoDB 中得到文件,并输出保存到硬盘上4. 从MongoDB中删除数据

MongoDB 与传统的关系型数据库一样能保存图片或文件到数据库,不过操作的方法有点特殊,它借助了 GridFS 来保存文件到数据库,比如图片,视频,音乐等文件都可以。关于GridFS 的介绍,可以参考这里:http://docs.mongodb.org/manual/core/gridfs/, 一般来说对文件册操作主要包括以下几方面:
1. 保存文件到mongoDB.
2. 获取所有的文件列表
3. 从MongoDB 中得到文件,并输出保存到硬盘上
4. 从MongoDB中删除数据

1. 保存文件到mongoDB.

String newFileName = "yihaomen-java-image"; 
File imageFile = new File("c:\\images\\Winter.jpg"); 
// create a "photo" namespace
GridFS gfsPhoto = new GridFS(db, "photo"); 
// get image file from local drive
GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile); 
// set a new filename for identify purpose
gfsFile.setFilename(newFileName); 
// save the image file into mongoDB
gfsFile.save(); 			


2. 从MongoDB 中得到文件,并输出保存到硬盘上
GridFS gfsPhoto = new GridFS(db, "photo"); 
DBCursor cursor = gfsPhoto.getFileList();
while (cursor.hasNext()) {
	System.out.println(cursor.next());
}


3. 从MongoDB 中得到文件,并输出保存到硬盘上
GridFS gfsPhoto = new GridFS(db, "photo");
GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName); 
// save it into a new image file
imageForOutput.writeTo("c:\\images\\Winter-From-Mongodb.jpg"); 


4. 删除文件数据
String newFileName = yiahomen-java-image";
GridFS gfsPhoto = new GridFS(db, "photo");
gfsPhoto.remove(gfsPhoto.findOne(newFileName));


整个测试代码如下:
package com.yihaomen.mongodb.process.image;

import java.io.File;
import java.io.IOException;
import java.net.UnknownHostException;

import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSInputFile;

public class MongoDBImage {
	
	public static void main(String[] args) {		 
		try {
 
			Mongo mongo = new Mongo("localhost", 27017);
			DB db = mongo.getDB("yihaomen");			
			DBCollection collection = db.getCollection("MyImage"); 
			String newFileName = "yihaomen-java-image"; 
			File imageFile = new File("c:\\images\\Winter.jpg"); 
			// create a "photo" namespace
			GridFS gfsPhoto = new GridFS(db, "photo"); 
			// get image file from local drive
			GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile); 
			// set a new filename for identify purpose
			gfsFile.setFilename(newFileName); 
			// save the image file into mongoDB
			gfsFile.save(); 
			// print the result
			DBCursor cursor = gfsPhoto.getFileList();
			while (cursor.hasNext()) {
				System.out.println(cursor.next());
			}
 
			// get image file by it's filename
			GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName); 
			// save it into a new image file
			imageForOutput.writeTo("c:\\images\\Winter-From-Mongodb.jpg"); 
			// remove the image file from mongoDB
			gfsPhoto.remove(gfsPhoto.findOne(newFileName)); 
			System.out.println("Done"); 
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (MongoException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

上一篇: java MongoDB 增加数据的四种方式
下一篇: Django Form 自定义字段错误信息

Avatar

过路的 评论于: 2017-12-04

还可以
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号