天风隼通过本文主要向大家介绍了mongodb gridfs,mongodb gridfs java,未转变者2.2.4,未转变者2.2.4外挂,未转变者2.2.4修改器等相关知识,希望本文的分享对您有所帮助
本文实例为大家分享了针对Mongodb3.3数据库中GridFS增删改查,供大家参考,具体内容如下
Program.cs代码如下:
internal class Program
{
private static void Main(string[] args)
{
GridFSHelper helper = new GridFSHelper("mongodb://localhost", "GridFSDemo", "Pictures");
#region 上传图片
//第一种
//Image image = Image.FromFile("D:\\dog.jpg");
//byte[] imgdata = ImageHelper.ImageToBytes(image);
//ObjectId oid = helper.UploadGridFSFromBytes(imgdata);
//第二种
//Image image = Image.FromFile("D:\\man.jpg");
//Stream imgSteam = ImageHelper.ImageToStream(image);
//ObjectId oid = helper.UploadGridFSFromStream("man",imgSteam);
//LogHelper.WriteFile(oid.ToString());
// Console.Write(oid.ToString());
#endregion
#region 下载图片
//第一种
//ObjectId downId = new ObjectId("578e2d17d22aed1850c7855d");
//byte[] Downdata= helper.DownloadAsByteArray(downId);
//string name= ImageHelper.CreateImageFromBytes("coolcar",Downdata);
//第二种
// byte[] Downdata = helper.DownloadAsBytesByName("QQQ");
//string name = ImageHelper.CreateImageFromBytes("dog", Downdata);
//第三种
//byte[] Downdata = helper.DownloadAsBytesByName("QQQ");
//Image img = ImageHelper.BytesToImage(Downdata);
//string path = Path.GetFullPath(@"../../DownLoadImg/") + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".jpg";
////使用path获取当前应用程序集的执行目录的上级的上级目录
//img.Save(path, System.Drawing.Imaging.ImageFormat.Jpeg);
#endregion
#region 查找图片
GridFSFileInfo gridFsFileInfo = helper.FindFiles("man");
Console.WriteLine(gridFsFileInfo.Id);
#endregion
#region 删除图片
//helper.DroppGridFSBucket();
#endregion
Console.ReadKey();
}
}
</div>
GridFSHelper.cs的代码如下:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.GridFS;
namespace MongoDemo
{
public class GridFSHelper
{
private readonly IMongoClient client;
private readonly IMongoDatabase database;
private readonly IMongoCollection<BsonDocument> collection;
private readonly GridFSBucket bucket;
private GridFSFileInfo fileInfo;
private ObjectId oid;
public GridFSHelper()
: this(
ConfigurationManager.AppSettings["mongoQueueUrl"], ConfigurationManager.AppSettings["mongoQueueDb"],
ConfigurationManager.AppSettings["mongoQueueCollection"])
{
}
public GridFSHelper(string url, string db, string collectionName)
{
if (url == null)
{
throw new ArgumentNullException("url");
}
else
{
client = new MongoClient(url);
}
if (db == null)
{
throw new ArgumentNullException("db");
}
else
{
database = client.GetDatabase(db);
}
if (collectionName == null)
{
throw new ArgumentNullException("collectionName");
}
else
{
collection = database.GetCollection<BsonDocument>(collectionName);
}
//this.collection = new MongoClient(url).GetDatabase(db).GetCollection<BsonDocument>(collectionName);
GridFSBucketOptions gfbOptions = new GridFSBucketOptions()
{
BucketName = "bird",
ChunkSizeBytes = 1*1024*1024,
ReadConcern = null,
ReadPreference = null,
WriteConcern = null
};
var bucket = new GridFSBucket(database, new GridFSBucketOptions
{
BucketName = "videos",
ChunkSizeBytes = 1048576, // 1MB
WriteConcern = WriteConcern.WMajority,
ReadPreference = ReadPreference.Secondary
});
this.bucket = new GridFSBucket(database, null);
}
public GridFSHelper(IMongoCollection<BsonDocument> collection)
{
if (collection == null)
{
throw new ArgumentNullException("collection");
}
this.collection = collection;
this.bucket = new GridFSBucket(collection.Database);
}
public ObjectId UploadGridFSFromBytes(string filename, Byte[] source)
{
oid = bucket.UploadFromBytes(filename, source);
return oid;
}
public ObjectId UploadGridFSFromStream(string filename,Stream source)
{
using (source)
{
oid = bucket.UploadFromStream(filename, source);
return oid;
}
}
public Byte[] DownloadAsByteArray(ObjectId id)
{
Byte[] bytes = bucket.DownloadAsBytes(id);
return bytes;
}
public Stream DownloadToStream(ObjectId id)
{
Stream destination = new MemoryStream();
bucket.DownloadToStream(id, destination);
return destination;
}
public Byte[] DownloadAsBytesByName(string filename)
{
Byte[] bytes = bucket.DownloadAsBytesByName(filename);
return bytes;
}
public Stream DownloadToStreamByName(string filename)
{
Stream destination = new MemoryStream();
bucket.DownloadToStreamByName(filename, destination);
return destination;
}
public GridFSFileInfo FindFiles(string filename)
{
var filter = Builders<GridFSFileInfo>.Filter.And(
Builders<GridFSFileInfo>.Filter.Eq(x => x.Filename, "man"),
Builders<GridFSFileInfo>.Filter.Gte(x => x.UploadDateTime, new DateTime(2015, 1, 1, 0, 0, 0, DateTimeKind.Utc)),
Builders<GridFSFileInfo>.Filter.Lt(x => x.UploadDateTime, new DateTime(2017, 2, 1, 0, 0, 0, DateTimeKind.Utc)));
var sort = Builders<GridFSFileInfo>.Sort.Descending(x => x.UploadDateTime);
var options = new GridFSFindOptions
{
Limit = 1,
Sort = sort
};
using (var cursor = bucket.Find(filter, options))
{
fileInfo = cursor.ToList().FirstOrDefault();
}
return fileInfo;
}
public void DeleteAndRename(ObjectId id)
{
bucket.Delete(id);
}
//The “fs.files” collection will be dropped first, followed by the “fs.chunks” collection. This is the fastest way to delete all files stored in a GridFS bucket at once.
public void DroppGridFSBucket()
{
bucket.Drop();
}
public void RenameAsingleFile(ObjectId id,string newFilename)
{
bucket.Rename(id, newFilename);
}
public void RenameAllRevisionsOfAfile(string oldFilename,string newFilename)
{
var filter = Builders<GridFSFileInfo>.Filter.Eq(x => x.Filename, oldFilename);
var filesCursor = bucket.Find(filter);
var files = filesCursor.ToList();
foreach (var file in files)
{
bucket.Rename(file.Id, newFilename);
}
}
}
}
</div>
ImageHelper.cs的代码如下:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MongoDemo
{
public static class ImageHelper
{
/// <summary>
/// //将Image转换成流数据,并保存为byte[]
/// </summary>
/// <param name="image"></param>
/// <returns></returns>
public static byte[] ImageToBytes(Image image)
{
ImageFormat format = image.RawFormat;
using (MemoryStream ms = new MemoryStream())
{
if (format.Equals(ImageFormat.Jpeg))
{
image.Save(ms, ImageFormat.Jpeg);
}
else if (format.Equals(ImageFormat.Png))
{
image.Save(ms, ImageFormat.Png);
}
else if (format.Equals(ImageFormat.Bmp))
{
imag

