文档章节

Java对mongodb-GridFS的增加,删除,查找操作

O龙猫O
 O龙猫O
发布于 2015/09/11 15:01
字数 439
阅读 193
收藏 2
package com.amarsoft.lab.mongo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.UnknownHostException;

import org.apache.commons.codec.digest.DigestUtils;
import org.junit.Assert;
import org.junit.Test;

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;

public class MyGridFsTest {
	private String host = "127.0.0.1";
	private int port = 27017;
	private String dbName = "demogridfs";

	/**
	 * 上传文件测试
	 * @throws UnknownHostException
	 * @throws FileNotFoundException
	 */
	@Test
	public void putFileTest() throws UnknownHostException,
			FileNotFoundException {
		Mongo connection = new Mongo(host, port);
		DB db = connection.getDB(dbName);
		GridFS gridFs = new GridFS(db,"myfs");

		String fileName = "/Users/yangsong/win-share/ams/ref/api-docs/JDK_API_1_6_zh_CN.CHM";
		String name = "JDK_API_1_6_zh_CN";

		InputStream in = new FileInputStream(fileName);
		GridFSInputFile gridFSInputFile = gridFs.createFile(in);
		gridFSInputFile.put("fcu", "tsir");
		gridFSInputFile.setFilename(name);
		gridFSInputFile.save();
		
	}
	
	/**
	 * 根据文件名查找文件
	 * @throws IOException
	 */
	@Test
	public void testFindFile() throws IOException{
		Mongo connection = new Mongo(host, port);
		DB db = connection.getDB(dbName);
		GridFS gridFs = new GridFS(db);

		//按名称查找文件
		String fileName = "/Users/yangsong/Documents/tmp/JDK_API_1_6_zh_CN-out.chm";
		String name = "JDK_API_1_6_zh_CN";
		GridFSDBFile gfsFile = getByFileName(name,gridFs);
		File outFile = new File(fileName);
//		if(!outFile.exists())outFile.createNewFile();
		gfsFile.writeTo(outFile);
		
		/**
		 * 测试删除文件
		 */
		DBObject query = new BasicDBObject("filename", fileName);
		gridFs.remove(query);
		gfsFile = getByFileName(name,gridFs);
		Assert.assertNull(gfsFile);
	}
	
	/**
	 * 根据MD5码查找文件
	 * @throws IOException
	 */
	@Test
	public void testFindFileByMd5() throws IOException{
		Mongo connection = new Mongo(host, port);
		DB db = connection.getDB(dbName);
		GridFS gridFs = new GridFS(db);
		
		String fileName = "/Users/yangsong/Documents/tmp/JDK_API_1_6_zh_CN-out.chm";
		GridFSDBFile gfsFile = getByMd5("df03c9cf37c5fbc5a7894e04297127d7",gridFs);
		File outFile = new File(fileName);
		gfsFile.writeTo(outFile);
		System.out.println("content-type:"+gfsFile.getContentType());
	}
	
	/**
	 * 计算文件的MD5码,看与数据库中存储的是否一致
	 * @throws FileNotFoundException
	 * @throws IOException
	 */
	@Test
	public void testCalcFileMd5() throws FileNotFoundException, IOException{
		String fileName = "/Users/yangsong/win-share/ams/ref/api-docs/JDK_API_1_6_zh_CN.CHM";
		File file = new File(fileName);
		String md5 = DigestUtils.md5Hex(new FileInputStream(file)); 
		System.out.println(md5);
	}

	public GridFSDBFile getById(Object id, GridFS fs) {
		DBObject query = new BasicDBObject("_id", id);
		GridFSDBFile gridFSDBFile = fs.findOne(query);
		return gridFSDBFile;
	}

	public GridFSDBFile getByFileName(String fileName, GridFS fs) {
		DBObject query = new BasicDBObject("filename", fileName);
		GridFSDBFile gridFSDBFile = fs.findOne(query);
		return gridFSDBFile;
	}
	public GridFSDBFile getByMd5(String md5, GridFS fs) {
		DBObject query = new BasicDBObject("md5", md5);
		GridFSDBFile gridFSDBFile = fs.findOne(query);
		return gridFSDBFile;
	}

}


© 著作权归作者所有

共有 人打赏支持
O龙猫O
粉丝 83
博文 39
码字总数 21151
作品 0
苏州
部门经理
私信 提问
Java MongoDB : Save image example

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 w......

引鸩怼孑
2015/05/22
0
0
Spring从MongoDB中下载文件之GridFS

问题 之前提到过以GridFS方式上传问题到MongoDB中:Spring保存文件到MongoDB之GridFS支持。现在需要从Mongodb中读取文件,应该怎么处理类? 解决 Maven 注解mongoDbFactory 获取文件流 Note...

亚林瓜子
2018/06/12
0
0
mongodb Gridfs操作

mongodb Gridfs操作 GridFS 介绍 GridFS是MongoDB规范用于存储和检索大文件,如图片,音频文件,视频文件等。这是一种文件系统用来存储文件,但数据存储于MongoDB集合中。GridFS存储文件比其...

Airship
03/15
0
0
基于GridFS+NGinx构建分布式文件系统 之实战(三)

基于GridFS构建分布式文件系统 首先看看什么是GridFS: GridFS is a mechanism for storing large binary files in MongoDB. There are several reasons why you might consider using GridF......

一枚Sir
2014/06/20
0
1
mongoDB--GridFS简介

前言 :GridFS从名字来看,就明白是一个文件系统,它是mongodb的一个子模块,使用GridFS可以基于mongodb来持久存储文件.并且支持分布式应用(文件分布存储和读取). 使用场景:如果你的系统有如下情...

索隆
2013/04/15
0
1

没有更多内容

加载失败,请刷新页面

加载更多

linux 扩展lv

相关概念 逻辑卷可以实现硬盘空间的动态划分和管理。 1】 物理卷 LV 处于最低层,可以是物理硬盘上的分区,也可以是整个物理硬盘 2】 卷组 VG 卷组建立在物理卷之上,一个卷组至少要包括一个...

hnairdb
18分钟前
1
0
如何快速定位Ruby函数源码

如何快速定位Ruby函数源码 1、gem gem which sidekiq 2、bundle bundle show redis 3、CTags Sublime extend ActiveSupport::Concernrescue_fromcurrent_company.cc_ad_tasks.creat......

mingle
19分钟前
1
0
基于 DataLakeAnalytics 的数据湖实践

随着软硬件各方面条件的成熟,数据湖(Data Lake)已经越来越受到各大企业的青睐, 与传统的数仓实践不一样的是,数据湖不需要专门的“入仓”的过程,数据在哪里,我们就从哪里读取数据进行分析...

阿里云云栖社区
21分钟前
1
0
word文档处理成富文本生成sql语句导入mysql

问题:需要将大量的已存在的word文档导入到web项目里在网站展示,不可能通过编辑录入的方式处理,通过程序实现。 解决思路:通过读取word文档处理成html,再获取html富文本内容,拼接成sql,...

S三少S
27分钟前
37
0
WAF开放规则定义权:专家策略+用户自定义策略=Web安全

在第一期“漫说安全”栏目中,我们用四格漫画的形式介绍了基于深度学习的阿里云WAF到底智能在哪里,能帮客户解决什么问题。 在今天的这期栏目里,我们依然通过漫画这种通俗易懂的方式,与大家...

迷你芊宝宝
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部