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

  • ecf150king

    ecf150king

    20 Ocak 2006
  • Motor Trend Channel

    Motor Trend

    11 Mart 2006
  • XxMinayaxX1

    XxMinayaxX1

    9 Mayıs 2012