SORU
14 ŞUBAT 2011, PAZARTESİ


C#, MongoDB GridFs ile nasıl fotoğraf gibi dosyaları saklamak için?

Arka uç benim gibi mongodb ile web uygulaması geliştiriyorum. Kullanıcılar profillerine resim yüklemek için bir-bağlantılı profil pic gibi istiyorum. MVC2 ile SEO sayfası kullanıyorum ve GridFs kütüphane ikili olarak büyük dosya türlerini depolamak için kullanılan okumuştum. Her yerde bu nasıl yapılır gibi ipuçları için baktım ama mongodb# apı veya GridFs C C için herhangi bir belge yok#. Çok şaşırdım ve kafam karıştı, gerçekten beyni daha iyi olurdu.

Aslında mongodb bir koleksiyon içine bir resim, bir kullanıcı tarafından yüklenen saklayan dosya yükleme denetleyicisi nasıl bir bilen var mı? Milyon kere teşekkürler!

Boşuna bu varyasyonları denedim.

Database db = mongo.getDB("Blog");
GridFile file = new GridFile(db);
file.Create("image.jpg");

var images = db.GetCollection("images");
images.Insert(file.ToDocument());

CEVAP
14 ŞUBAT 2011, PAZARTESİ


Örnek olarak aşağıdaki dosyayı kaydetmek ve gridfs(resmi mongodb sürücüsünü kullanarak): tekrar oku

 var server = MongoServer.Create("mongodb://localhost:27020");
 var database = server.GetDatabase("tesdb");

 var fileName = "D:\\Untitled.png";
 var newFileName = "D:\\new_Untitled.png";
 using (var fs = new FileStream(fileName, FileMode.Open))
 {
    var gridFsInfo = database.GridFS.Upload(fs, fileName);
    var fileId = gridFsInfo.Id;

    ObjectId oid= new ObjectId(fileId);
    var file = database.GridFS.FindOne(Query.EQ("_id", oid));

    using (var stream = file.OpenRead())
    {
       var bytes = new byte[stream.Length];
       stream.Read(bytes, 0, (int)stream.Length);
       using(var newFs = new FileStream(newFileName, FileMode.Create))
       {
         newFs.Write(bytes, 0, bytes.Length);
       } 
    }
 }

Sonuçlar:

Dosya:

File im mongodb

Parçaları toplama:

Chunks collection

Bu yardım umut.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alexey - servant of Christ

    Alexey - ser

    15 EYLÜL 2007
  • NewsyTech

    NewsyTech

    2 AĞUSTOS 2010
  • Richard Laxa

    Richard Laxa

    30 AĞUSTOS 2012