使用mongodb对文件(图片、音频、视频)的存储、读取操作

使用mongodb对文件(图片、音频、视频)的存储、读取操作

    实现代码示例:

package mongo.util;

import java.io.File;
import java.io.IOException;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSInputFile;

/**
 * 使用mongodb对文件(图片、音频、视频)的存储、读取操作
 * @author wangzp
 */
public class Mon_GridFS {

	public static void main(String[] args) throws Exception {
		//saveFile();
		readFile();
	}
    
	/**
     * 存储文件
	 * @throws IOException 
     */
	public static void saveFile() throws IOException{
		//连接服务器,创建实例
		Mongo mongo = new Mongo("127.0.0.1",27017);
		//连接数据库
		DB db = mongo.getDB("testGridFS");
		//文件是在DB基础上实现的,与表和文档没有关系
		GridFS gridFS = new GridFS(db);
		
		String fileName = "2-2 数据库设计.mp4";
		File readFile = new File("d:/0202/"+fileName);
		GridFSInputFile mongofile = gridFS.createFile(readFile);
		//再添加对象
		mongofile.put("path", "d:/0202/"+fileName);
		//保存
		mongofile.save();
	}
	
	/**
	 * 读取文件,写入磁盘
	 * @throws Exception 
	 */
	public static void readFile() throws Exception{
		//1.连接服务器,创建实例
		Mongo mongo = new Mongo("127.0.0.1",27017);
		//连接数据库
		DB db = mongo.getDB("testGridFS");
		//文件是在DB基础上实现的,与表和文档没有关系
		GridFS gridFS = new GridFS(db);
	    
		//2.查找条件
		DBObject query = new BasicDBObject(); 
		List listFile = gridFS.find(query);
		GridFSDBFile gridFSDBFile = listFile.get(0);
		
		//3.获取文件名
		//注意:不是fs中的表的列名,而是根据调试gridDBFile中的属性而来
		String fileName = (String)gridFSDBFile.get("filename");
		System.out.println("从MongoDB获得的文件名为:"+fileName);
		
		//4.创建空文件
		File writeFile = new File("d:/"+fileName);
		if(!writeFile.exists()){
			writeFile.createNewFile();
		}
		
		//5.写入文件
		gridFSDBFile.writeTo(writeFile);
	}
	
}

    图片位置:
    使用mongodb对文件(图片、音频、视频)的存储、读取操作_第1张图片
    

    mongoDB 数据库客户端

使用mongodb对文件(图片、音频、视频)的存储、读取操作_第2张图片
 
 
 

你可能感兴趣的:(架构_04.,mongodb)