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

  • Android Police

    Android Poli

    21 NİSAN 2010
  • Diogo Oliveira

    Diogo Olivei

    4 HAZİRAN 2006
  • Truc Minh

    Truc Minh

    23 Ocak 2011

İLGİLİ SORU / CEVAPLAR