GridFS
mongoDB除了保存各种文档(JOSN结构)外还能够保存文件。GridFS规范提供了一种透明机制,可以将一个大文件分割成为多个较小的文档,这样的机制允许我们有效的保存大文件对象,特别对于那些巨大的文件,比如视频、高清图片等。
GridFS使用两个表来存储数据:
-
files:包含元数据对象
文件的元数据放在这个集合里面,默认fs.files。这个里面的每个文档表示GridFS中的一个文件,与文件相关的自定义元数据也保存在其中,除了用户自定义的键,GridFS还有默认的一些键:
- _id:文件唯一的id,在块中为“files_id”键的值存储
- length:文件内容总的字节数
- chunksize:每块的大小,以字节为单位。默认25K,可以调整
- uploadDate:文件存入的时间
- md5:文件内容的md5校验,由服务端生成
-
chunks:包含其他一些相关信息的二进制块
GridFS的块有个单独的集合。默认情况下,块将使用fs.chunks集合,如果有需要可以覆盖。这个块集合里面文档的结构非常简单:
{ "_id":ObjectId("......"), "n":0, "data":BinData("......"), "files_id":ObjectId(".......") }
- _id:标志唯一
- n:表示块的编号,也就是这个块在原文件中的顺序号
- data:包含组成文件块的二进制数据
- files_id: 包含这个块元数据的文件文档的"_id"
使用mongofile来操作GridFS:
//将 “aaaa” 写入foo.txt文件中 c:\MongoDB\mongodb_win32_x86_64_2.2.7\bin>echo "aaaa" > foo.txt //将foo.txt保存到GridFS中 c:\MongoDB\mongodb_win32_x86_64_2.2.7\bin>mongofiles.exe put foo.txt connected to: 127.0.0.1 added file: { _id: ObjectId('53449f0becdebde54ff76105'), filename: "foo.txt", ch unkSize: 262144, uploadDate: new Date(1397006091696), md5: "819596956779801cced4 fb21379bf023", length: 9 } done! //查看 c:\MongoDB\mongodb_win32_x86_64_2.2.7\bin>mongofiles.exe list connected to: 127.0.0.1 foo.txt 9 //获取 c:\MongoDB\mongodb_win32_x86_64_2.2.7\bin>mongofiles.exe get foo.txt connected to: 127.0.0.1 done write to: foo.txt
命令说明
put:将文件系统中的一个文件添加到GridFS
list:会把所有添加到GridFS中的文件列出来
get:put的反向操作
在mongodb工具中查看GridFS
相关推荐
Mongodb基于GridFS存储文件,通过流的方式存储文件图片,以及读取功能。本人亲自测试、编写。值得信赖
功能:基于mongodb gridfs实现简单文件上传、下载、搜索、删除。 开发环境:VS2012 mongodb驱动:官方Driver 上传控件:jquery uploadify 疑问:sort()方法可能有点问题 PS:有问题可以留言,欢迎交流~
Java 操作Mongodb中存储的文件的实例
java+mongDB做文件服务器,用于文件存储,写了个简单文件上传下载删除DEMO,用eclipse import项目即可。
gridfs有三种方式存储文件 第一种直接存储文件 $id = $grid->storeFile(“./logo.png”); 第二种存储文件二进制流 $data = http://huoche.7234.cn/images/jb51/ktwizyf5xs3.png”); $id = $grid->...
Vue+axios+Spring Boot+mongoDB 基于Mongo图片存储和基于GridFS的文件存储.zip
springboot 操作mongodb(包含GridFs存储文件),适合对mongodb感兴趣的java开发者
NULL 博文链接:https://chwshuang.iteye.com/blog/2065974
但是,由于它将文件存储在ASCII字符串块中,因此毫无疑问会降低性能。 我正在尝试从GridFS读取3种不同的部署(不同的MongoDB驱动程序)。 并将结果与经典的Nginx配置进行比较。贡献者( ) ( )构型1,Nginx ...
网站大量图片存储需要用到Mongodb,本代码中以图片上传、图片更新、图片删除为例子,展示了以GridFS方式对文件进行存取。
利用mongodb存储文件,前台使用百度webuploader的文件md5实现断点续传,一次上传,下次秒传,解决文件重复问题,避免数据冗余,文件上传后支持下载, 特定格式支持在线预览,office转pdf后前台新页面显示pdf,相关...
编辑配置文件gridfs-to-s3.yml以设置MongoDB GridFS / Amazon S3连接设置和其他属性。 要将文件从GridFS复制到S3 ,请运行: perl bin/copy-kvs.pl gridfs-to-s3.yml mongodb_gridfs amazon_s3 要将文件从S3复制...
本篇文章是对PHP操作MongoDB GridFS存储文件进行了详细的分析介绍,需要的朋友参考下
Laravel开发-gridfs 使用laravel上的gridfs存储文件、图像和文档
Multer的GridFS存储引擎 存储引擎,用于将上传的文件直接存储到MongoDb。 :fire: 产品特点与MongoDb版本2和3。 真正简单的API。 与等于或大于10的任何Node.js版本兼容。 缓存基于url的连接。 与猫鼬连接对象兼容。 ...
使用NodeJS上传MongoDB / GridFS文件。 PS :此项目有一个JS / Es *版本和Typescript版本,我希望在集成方面保持同步,因此,为清楚起见, DEV (此分支)将具有JS / ES *版本和分支将具有Typescript版本。 尽管听...
文件上传到MongoDBGFS和Express 使用 Express 和 Multer 编写的 MongoDB GridFS 文件服务器示例依赖关系此示例上传文件并将它们存储在 MongoDB 的 GridFS 中。 要运行此示例,您需要在系统上安装 MongoDB。 在 OSX ...
但是当文件太大时,例如图片和视频等文件,每个文档的长度是有限的,于是mongoDb会提供了一种处理大文件的规范–GridFS。 GridFS实现原理 在GridFS数据库中,默认使用fs.chunks 和fs.files来存储文件,其中fs.files...