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

  • aki6336

    aki6336

    14 AĞUSTOS 2008
  • hotstrikegently

    hotstrikegen

    26 AĞUSTOS 2011
  • WhtButterflyLiz

    WhtButterfly

    14 NİSAN 2008