假如在项目中已经采取了Mongodb,那么可以不用在重新设计文件系统了,应为MongoDb本身有的Gridfs就是一个很好的文件系统,Mongodb会利用自己的分片或者复制机制,对于文件存储和故障恢复都很容易,分配数据空间时一般是2GB为一块,不会产生磁盘碎片。
Mongodb内部的基本思想是将大文件分成很多块,妹块做为一个单独的文档存储,使用files和chunks来控制。这样就可以存储大文件。
Mongodb 的GridFS使用比较简单,Shell对其提供了支持,mongofiles程序提供了几个指令:put,get,list,search,delete 用来操作文件。
文件存储后有以下几个字段可以读取 :_id,length,chunkSize,uploadDate,md5(可以拿来校验是否上传完整)
下面是采用JAVA实现对Mongodb的GridFS的存储功能部分代码
package com.nbey.data.dzbl.business.impl; import java.io.File; import java.io.IOException; import java.util.Date; import java.util.List; import com.mongodb.DB; import com.mongodb.gridfs.GridFS; import com.nbey.data.dzbl.business.IGridfsDao; import com.nbey.data.dzbl.dao.support.AbstractBaseMongoTemplete; import com.nbey.data.dzbl.domain.EMRECORD; import com.nbey.data.dzbl.domain.Gridfsfile; import com.nbey.data.dzbl.fileio.ReadTxtContent; import com.mongodb.gridfs.GridFSFile; public class GridfsDao extends AbstractBaseMongoTemplete implements IGridfsDao { static GridFS gridFS = null; @Override public void putFile(List<File> list) { DB db = this.mongoTemplate.getDb(); gridFS = new GridFS(db); Gridfsfile fs = null; String abpath = null; String parent = null; String emrText =null; for (File file : list) { fs = new Gridfsfile(); abpath = file.getAbsolutePath(); parent = file.getParent(); // regex为\\\\,因为在java中\\表示一个\,而regex中\\也表示\,所以当\\\\解析成regex的时候为\\。 // 由于unix中file.separator为斜杠"/",下面这段代码可以处理windows和unix下的所有情况: String temp[] = parent.replaceAll("\\\\", "/").split("/"); if (temp.length > 1) { parent = temp[temp.length - 1]; } fs.setFilename(parent + "$$$$" + file.getName()); fs.setContentType(file.getName().substring( file.getName().lastIndexOf("."))); fs.setUploaded(new Date()); saveFile(new File(abpath), fs.getFilename()); EMRECORD emr = new EMRECORD(); if (fs.getFilename().startsWith("M")) { emr.setoUTPATNO(fs.getFilename()); } else { emr.setiNPATNO(fs.getFilename()); } emr.setfILETYPE(fs.getFilename().substring( fs.getFilename().lastIndexOf("."))); emr.setaRCHIVED("Y"); if (".txt".equals(fs.getFilename().substring( fs.getFilename().lastIndexOf(".")))) { emr.seteMRTEXT(ReadTxtContent.readTxtFile(abpath)); } saveToEMRECORD(emr); } } public void saveFile(File file, String fileName) { try { GridFSFile mongofile = gridFS.createFile(file); mongofile.put("filename", fileName); mongofile.put("uploadDate", new Date()); mongofile.put("contentType", fileName.substring(fileName.lastIndexOf("."))); mongofile.save(); } catch (IOException e) { e.printStackTrace(); } } @Override public void saveToEMRECORD(EMRECORD emr) { this.mongoTemplate.insert(emr, "emrecord"); } }
相关推荐
功能:基于mongodb gridfs实现简单文件上传、下载、搜索、删除。 开发环境:VS2012 mongodb驱动:官方Driver 上传控件:jquery uploadify 疑问:sort()方法可能有点问题 PS:有问题可以留言,欢迎交流~
基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行! 基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,...
gridfs2s3 - 将 MongoDB GridFS 文件迁移到 AWS S3 的工具 这是一个简单的工具,它将抓取您指向的 GridFS 中的所有文件,并将它们粘贴到 S3 中 安装 go install github.com/Bowbaq/gridfs2s3 用法 gridfs2s3 -h flag...
MongoDB GridFS.pdf 学习资料 复习资料 教学资源
主要介绍了PHP MongoDB GridFS 存储文件的方法详解的相关资料,需要的朋友可以参考下
Mongodb的gridfs的C#的例子
网站大量图片存储需要用到Mongodb,本代码中以图片上传、图片更新、图片删除为例子,展示了以GridFS方式对文件进行存取。
Mongodb基于GridFS存储文件,通过流的方式存储文件图片,以及读取功能。本人亲自测试、编写。值得信赖
我正在尝试从GridFS读取3种不同的部署(不同的MongoDB驱动程序)。 并将结果与经典的Nginx配置进行比较。贡献者( ) ( )构型1,Nginx location /files/ { alias /home/ubuntu/;}测试期间, open_file_cache...
NULL 博文链接:https://chwshuang.iteye.com/blog/2065974
NULL 博文链接:https://shift-alt-ctrl.iteye.com/blog/2195646
文件上传到MongoDBGFS和Express 使用 Express 和 Multer 编写的 MongoDB GridFS 文件服务器示例依赖关系此示例上传文件并将它们存储在 MongoDB 的 GridFS 中。 要运行此示例,您需要在系统上安装 MongoDB。 在 OSX ...
编辑配置文件gridfs-to-s3.yml以设置MongoDB GridFS / Amazon S3连接设置和其他属性。 要将文件从GridFS复制到S3 ,请运行: perl bin/copy-kvs.pl gridfs-to-s3.yml mongodb_gridfs amazon_s3 要将文件从S3复制...
java+mongDB做文件服务器,用于文件存储,写了个简单文件上传下载删除DEMO,用eclipse import项目即可。
本篇文章是对PHP操作MongoDB GridFS存储文件进行了详细的分析介绍,需要的朋友参考下
用于MongoDB GridFS的简单RESTful网关。 实现此网关的主要原因是过时的Nginx GridFS模块( )。 不幸的是,与编写用于访问GridFS的微服务相比,重新启动该项目似乎太困难了:) 安装 go install github....
骆驼:: Mongodb GridFS 该项目是Mongodb GridFS的Camel组件。 要构建此项目,请使用 mvn install 网址格式 gridfs:connectionBean?database=databaseName&bucket=bucket&operation=operationName[&moreOptions.....
收藏夹通过由 ImageMagick 和 FFMPEG 支持的 RESTful 接口公开 MongoDB GridFS ##目标创建与 Amazon S3 具有相同界面的文件存储服务,您可以将其托管在您自己的服务器中分别使用 ImageMagick 和 FFMPEG 查询图像和...
利用mongodb存储文件,前台使用百度webuploader的文件md5实现断点续传,一次上传,下次秒传,解决文件重复问题,避免数据冗余,文件上传后支持下载, 特定格式支持在线预览,office转pdf后前台新页面显示pdf,相关...