使用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<GridFSDBFile> 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 数据库客户端


 
 
 

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MongoDB可以存储图片视频,一般使用GridFS来实现。GridFS是MongoDB的一种文件存储方式,它将大文件拆分成多个文档,每个文档可以存储一部分文件内容。GridFS使用两个集合来存储文件,一个集合存储元数据,另一个集合存储文件块。使用GridFS存储文件的步骤如下: 1. 连接MongoDB数据库,并选择一个数据库。 2. 创建GridFSBucket对象,指定文件存储的集合名称。 3. 打开要存储文件,并将文件块写入GridFSBucket对象。 4. 关闭文件,并在元数据集合中创建一个文档,记录文件信息。 以下是一个使用GridFS存储图片的示例代码: ```python from pymongo import MongoClient from gridfs import GridFSBucket # 连接MongoDB数据库 client = MongoClient("mongodb://localhost:27017/") db = client["mydatabase"] # 创建GridFSBucket对象 bucket = GridFSBucket(db, bucket_name="images") # 打开要存储图片文件 with open("myimage.png", "rb") as f: # 将文件块写入GridFSBucket对象 file_id = bucket.upload_from_stream("myimage.png", f) # 在元数据集合中创建一个文档,记录文件信息 db.images.insert_one({ "filename": "myimage.png", "file_id": file_id }) ``` 类似地,可以使用GridFS存储视频文件。需要注意的是,由于视频文件通常很大,存储时需要将文件拆分成多个块,并逐个写入GridFSBucket对象。在读取视频文件时,也需要将多个块合并成完整的文件
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值