背景
假设使用MongoDB的GridFS做分布式文件系统,同样的文件在文件系统中只存一份,那么在存入文件时就需要判断文件是否已经存在,在GridFS中每个文件都有唯一的md5哈希值,只需要用文件的md5值判断是否在GridFS中已经存在就可以了,所谓的秒传功能就是用的该原理。
技术栈
C#、VS2013、MongoDB、GridFS
实现
1 . 首先根据文件流得到md5值,代码如下:
代码如下 | 复制代码 |
//计算文件的MD5码 try return result; |
2 . 根据md5值在GridFS中进行唯一性校验,方法如下:
代码如下 | 复制代码 |
public string IsExist(string tag) { string id = ""; var files = _gridFs.Find(Query.EQ("md5", BsonValue.Create(tag))); if(files.Count() > 0) { id=files.FirstOrDefault().Id.ToString(); } return id; } |
3 . GridFS操作类的完整代码参考