mongodb基础系列——java操作mongodb实现图片文件功能
来源:互联网 发布:电脑软件连不上网络 编辑:程序博客网 时间:2024/04/19 02:51
mongodb支持多种语言,并且提供了多种语言的驱动。
前提:下载相应的驱动:官网上下载:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/
本人使用mongo-2.10.1.jar版本:
mongodb操作文件,主要是通过GridFS类。存储文件主要存放在fs中了,其中的fs是数据库默认的。
并且GridFS是直接与数据库打交道,与collection集合无关。
具体的操作如下:其中有相应的注释:
- package com.mongo.dao;
- import java.io.File;
- 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 lhy
- *
- */
- public class GridFSTest {
- public static void main(String[] args) throws Exception {
- //saveFile();
- readFile();
- }
- /**
- * 存储文件
- */
- public static void saveFile() throws Exception{
- //连接服务器
- Mongo mongo=new Mongo();
- //连接数据库
- DB db=mongo.getDB("testGridFS");
- //文件操作是在DB的基础上实现的,与表和文档没有关系
- GridFS gridFS=null;
- gridFS=new GridFS(db);
- String fileName="vltest.log";
- File readFile=new File("d:/"+fileName);
- GridFSInputFile mongofile=gridFS.createFile(readFile);
- //可以再添加属性
- mongofile.put("path","d:/"+fileName);
- //保存
- mongofile.save();
- 或者用byte[]保存图片
- byte[]tempbytes;
- ..........
- InputStream inputImage = new ByteArrayInputStream(tempbytes);
GridFS gridFS=null;
gridFS=new GridFS(db1);
GridFSInputFile gridFSInputFile = gridFS.createFile(inputImage);
gridFSInputFile.setId("999");
gridFSInputFile.setFilename("java学习");
gridFSInputFile.save(); - }
- /**
- * 读文件,读到磁盘上
- * @throws Exception
- */
- public static void readFile() throws Exception{
- //链接服务器
- Mongo mongo=new Mongo();
- //连接数据库
- DB db=mongo.getDB("testGridFS");
- GridFS gridFs=null;
- gridFs=new GridFS(db);
- //查找条件
- DBObject query=new BasicDBObject();
- //查询的结果:
- List<GridFSDBFile> listfiles=gridFs.find(query);
- GridFSDBFile gridDBFile=listfiles.get(0);
- //获得其中的文件名
- //注意 : 不是fs中的表的列名,而是根据调试gridDBFile中的属性而来
- String fileName=(String)gridDBFile.get("filename");
- System.out.println("从Mongodb获得文件名为:"+fileName);
- File writeFile=new File("d:/"+fileName);
- if(!writeFile.exists()){
- writeFile.createNewFile();
- }
- //把数据写入磁盘中
- //查看相应的提示
- gridDBFile.writeTo("d:/a.txt");
- //写入文件中
- gridDBFile.writeTo(writeFile);
- 或者
- ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
- GridFSDBFile gridFSDBFile = gridFS.findOne(query);
InputStream in=gridFSDBFile.getInputStream();
//InputStream转换为InputStreambyte[]
while ((rc = in.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
byte[] in_b = swapStream.toByteArray(); - File file=new File("E:\\cc\\44.jpg");
FileOutputStream out=new FileOutputStream(file);
out.write(in_b); - }
- }
其中图片也是这么存储的,把图片当作文件来存储。
运行上述存储结果如下:
0 0
- mongodb基础系列——java操作mongodb实现图片文件功能
- mongodb基础系列——java操作mongodb实现图片文件功能
- mongodb基础系列——java操作mongodb实现图片文件功能
- mongodb基础系列——java操作mongodb实现CURD
- mongodb基础系列——java操作mongodb实现CURD
- mongoDB——java操作mongoDB实现文件上传下载
- mongoDB——java操作mongoDB实现文件上传下载
- mongoDB——java操作mongoDB实现文件上传下载
- mongoDB——java操作mongoDB实现文件上传下载
- mongoDB——java操作mongoDB实现文件上传下载
- mongoDB——java操作mongoDB实现文件上传下载
- mongodb基础系列——mongodb简介
- mongoDB——java操作mongodb文档
- mongoDB——java操作mongodb文档
- mongoDB——java操作mongodb文档
- mongoDB——java操作mongodb文档
- mongodb存取图片文件功能
- MongoDB系列之三:java操作MongoDB
- 受限波兹曼机Restricted Boltzmann Machines (RBM)
- 浅谈模拟退火算法
- 第一专题总结(贪心算法)
- android的 deeplink与服务路由的思考
- 模拟退火算法(SA,Simulated Annealing)思想
- mongodb基础系列——java操作mongodb实现图片文件功能
- 现货代理,贵金属代理怎么选择一个好的平台?
- Learn Unity(0)——basic C# for Unity
- [LeetCode] Burst Balloons
- 剑指offer-面试题26:复杂链表的复制
- Eclipse下Maven工程多模块继承和聚合的创建
- 大数据工程师:大数据的java基础 第四周
- 如何提高程序的健壮性,增加判断。
- android studio 开发 Execution failed for task