Java 程序保存图片,文件到 MongoDB 数据库
By:Roy.LiuLast updated:2014-04-17
MongoDB 与传统的关系型数据库一样能保存图片或文件到数据库,不过操作的方法有点特殊,它借助了 GridFS 来保存文件到数据库,比如图片,视频,音乐等文件都可以。关于GridFS 的介绍,可以参考这里:http://docs.mongodb.org/manual/core/gridfs/, 一般来说对文件册操作主要包括以下几方面:
1. 保存文件到mongoDB.
2. 获取所有的文件列表
3. 从MongoDB 中得到文件,并输出保存到硬盘上
4. 从MongoDB中删除数据
1. 保存文件到mongoDB.
2. 从MongoDB 中得到文件,并输出保存到硬盘上
3. 从MongoDB 中得到文件,并输出保存到硬盘上
4. 删除文件数据
整个测试代码如下:
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();
}
}
}
From:一号门
Previous:java MongoDB 增加数据的四种方式

COMMENTS