C#
using MongoDB.Bson;
using MongoDB.Driver;
C#
private void BtnInserisciFile_Click(object sender, EventArgs e)
{
try
{
string percorsoNomeFile = "C:\\Varie\\faro.bmp";
//Rilevo Array byte del file
byte[] fileArrayBytes = File.ReadAllBytes(percorsoNomeFile);
//creo un documento BsonDocument con
l'array byte del file e altre informazioni
var
nuovoFile = new BsonDocument
{
{ "NomeFile", Path.GetFileName(percorsoNomeFile)
}, // Nome del file
{ "Contenuto", fileArrayBytes }, // Contenuto del file come array di byte
{ "tipoFile", Path.GetExtension(percorsoNomeFile)
} // tipo file
};
//Ottengo la collection dati
var
clientMongoDB = new MongoClient("mongodb://localhost:27017");
var
database = clientMongoDB.GetDatabase("Amministrazione");
var
collection = database.GetCollection<BsonDocument>("Dati");
//Inserisco il nuovo documento nella collection
collection.InsertOne(nuovoFile);
MessageBox.Show("File
inserito con successo nella collection 'Dati'.");
}
catch (MongoCommandException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
C#
private void BtnInserisciFile_Click(object sender, EventArgs e)
{
try
{
//Oggetto del client MongoDB
var clientMongoDB = new MongoClient("mongodb://localhost:27017");
//Seleziono il database dal quale
rilevare le collection
var
database = clientMongoDB.GetDatabase("Amministrazione");
//Creo una collection per i file nel caso che non esiste
if (!database.ListCollectionNames().ToList().Contains("Dati"))
{
database.CreateCollection("Dati");
}
//Seleziono la collection per inserire il file
var
collection = database.GetCollection<BsonDocument>("Dati");
//Crea un nuovo documento BsonDocument con l'array byte
del file e altre informazioni
var filePath = "C:\\Varie\\faro.jpg";
if (!File.Exists(filePath))
{
MessageBox.Show("Il file specificato non esiste.");
return;
}
var fileBytes = File.ReadAllBytes(filePath);
//Creo un nuovo documento
BsonDocument con il file e altre informazioni
var nuovoFile = new BsonDocument
{
{ "NomeFile", Path.GetFileName(filePath) }, // Nome del file
{ "Contenuto", new BsonBinaryData(fileBytes, BsonBinarySubType.Binary) }, // Contenuto del file come array di byte
{ "DataCreazione", DateTime.Now } // Data di creazione del file
};
collection.InsertOne(nuovoFile);
MessageBox.Show("File
inserito con successo.");
}
catch (MongoCommandException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
C#
using MongoDB.Driver.GridFS;
C#
//Oggetto del client MongoDB
var clientMongoDB = new MongoClient("mongodb://localhost:27017");
//Seleziono
il database dal quale rilevare le collection
var
database = clientMongoDB.GetDatabase("Amministrazione");
var filePath = "C:\\Varie\\file20Mb.dll";
if (!File.Exists(filePath))
{
MessageBox.Show("Il file specificato non esiste.");
return;
}
var gridFSbucket = new GridFSBucket(database);
//Leggo il file e lo converto in
array di byte
using (var fileStream = new FileStream(filePath, FileMode.Open))
{
var fileId = gridFSbucket.UploadFromStream(Path.GetFileName(filePath), fileStream);
}
C#
private void BtnDownloadFile_Click(object sender, EventArgs e)
{
try
{
//Oggetto del client MongoDB
var clientMongoDB = new MongoClient("mongodb://localhost:27017");
//Seleziono il database dal quale
rilevare le collection
var
database = clientMongoDB.GetDatabase("Amministrazione");
//Selezioniono la collection
var
collection = database.GetCollection<BsonDocument>("Dati");
//Recupero il documento che contiene il file
var filtro
= Builders<BsonDocument>.Filter.Eq("NomeFile", "faro.bmp");
//rilevo il file
var
documentoFile = collection.Find(filtro).FirstOrDefault();
if
(documentoFile == null)
{
MessageBox.Show("Documento
non trovato.");
return;
}
//Rilevo l'array di byte del file dal documento
var
fileBytes = documentoFile["Contenuto"].AsByteArray;
//Variabile per il salvataggio del file
var
percorsoSalvataggio = "C:\\Varie\\faro_scaricato.bmp";
File.WriteAllBytes(percorsoSalvataggio,
fileBytes);
MessageBox.Show("File
scaricato con successo in: " + percorsoSalvataggio);
}
catch (MongoCommandException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
C#
private void BtnDownloadFile_Click(object sender, EventArgs e)
{
try
{
//Oggetto del client MongoDB
var clientMongoDB = new MongoClient("mongodb://localhost:27017");
//Seleziono il database dal quale
rilevare le collection
var
database = clientMongoDB.GetDatabase("Amministrazione");
//Recupero il documento che contiene il file
var filtro = Builders<BsonDocument>.Filter.Eq("filename", "file20Mb.dll");
//rilevo il file di grandi dimensioni
var documentoFile = database.GetCollection<BsonDocument>("fs.files").Find(filtro).FirstOrDefault();
//Verifico se il documento esiste
if
(documentoFile == null)
{
MessageBox.Show("Documento
non trovato.");
return;
}
//Rilevo l'id del file
var fileId = documentoFile["_id"].AsObjectId;
//Creo un oggetto GridFSBucket per
gestire i file di grandi dimensioni
var gridFSbucket = new GridFSBucket(database);
//Variabile per il salvataggio del
file
var
percorsoSalvataggio = "C:\\Varie\\file20Mb_scaricato.dll";
//Scarico il file dal database e lo salvo nel percorso
specificato
using (var fileStream = new FileStream(percorsoSalvataggio, FileMode.Create))
{
gridFSbucket.DownloadToStream(fileId, fileStream);
}
MessageBox.Show("File
scaricato con successo in: " + percorsoSalvataggio);
}
catch (MongoCommandException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
C#
private void BtnAggiornaFile_Click(object sender, EventArgs e)
{
try
{
//Oggetto del client MongoDB
var clientMongoDB = new MongoClient("mongodb://localhost:27017");
//Oggetto per la gestione del
database dal quale rilevare le collection
var
database = clientMongoDB.GetDatabase("Amministrazione");
//Oggetto per la gestione delle collection
var
collection = database.GetCollection<BsonDocument>("Dati");
//Rilevo il documento da modificare
var filtro = Builders<BsonDocument>.Filter.Eq("_id", new ObjectId("68a73a8d0d6f07e2909e618c"));
var documentoFile =
collection.Find(filtro).FirstOrDefault();
string percorsoNomeFile = "C:\\Varie\\faroBiancoNero.jpg";
// Rilevo Array byte del file
byte[] fileArrayBytes = File.ReadAllBytes(percorsoNomeFile);
//Aggiorno il documento con il nuovo
file
var aggiornamento = Builders<BsonDocument>.Update.Set("Contenuto", fileArrayBytes)
.Set("NomeFile", "nuovo_" + Path.GetFileName(percorsoNomeFile));
var options
= new UpdateOptions { IsUpsert = false }; //Non
crea un nuovo documento se non trova quello da aggiornare
//Aggiorno il documento nella collection
var
risultato = collection.UpdateOne(filtro,
aggiornamento, options);
//Verifico se è stato aggiornato il documento
if
(risultato.ModifiedCount == 0)
{
MessageBox.Show("Nessun documento aggiornato. Verificare l'ID selezionato.");
return;
}
MessageBox.Show("File
aggiornato con successo.");
}
catch (MongoCommandException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void
BtnAggiornaFileGrandiDimensioni_Click(object sender, EventArgs e)
{
try
{
//Oggetto del client MongoDB
var clientMongoDB = new MongoClient("mongodb://localhost:27017");
//Oggetto per la gestione del
database dal quale rilevare le collection
var
database = clientMongoDB.GetDatabase("Amministrazione");
//Oggetto per la gestione dei grandi file
var gridFSbucket = new GridFSBucket(database);
//Elimino il file esistente
var
filtroElimina = Builders<BsonDocument>.Filter.Eq("filename", "file20Mb.dll");
var documentoFileElimina = database.GetCollection<BsonDocument>("fs.files").Find(filtroElimina).FirstOrDefault();
if (documentoFileElimina != null)
{
var
fileIdElimina = documentoFileElimina["_id"].AsObjectId;
gridFSbucket.Delete(fileIdElimina);
}
//Creo un nuovo file
var filePath = "C:\\Varie\\faropuzzle.jpg";
if (!File.Exists(filePath))
{
MessageBox.Show("Il
file specificato non esiste.");
return;
}
//Leggo il file e lo converto in array di byte
using (var fileStream = new FileStream(filePath, FileMode.Open))
{
var fileId = gridFSbucket.UploadFromStream(Path.GetFileName(filePath), fileStream);
}
MessageBox.Show("File
aggiornato con successo.");
}
catch (MongoCommandException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
C#
private void BtnEliminaFile_Click(object sender, EventArgs e)
{
try
{
//Oggetto del client MongoDB
var clientMongoDB = new MongoClient("mongodb://localhost:27017");
//Oggetto per la gestione del
database dal quale rilevare le collection
var
database = clientMongoDB.GetDatabase("Amministrazione");
//Oggetto per la gestione delle collection
var
collection = database.GetCollection<BsonDocument>("Dati");
//Rilevo il documento da modificare
var filtro = Builders<BsonDocument>.Filter.Eq("_id", new ObjectId("68a73a4723525c10b1f3f4ea"));
//Aggiorno il documento con zero
var
aggiornamento = Builders<BsonDocument>.Update.Set("Contenuto", BsonNull.Value);
var options
= new UpdateOptions { IsUpsert = false }; //Non
crea un nuovo documento se non trova quello da aggiornare
//Aggiorno
il documento nella collection
var
risultato = collection.UpdateOne(filtro, aggiornamento, options);
//Verifico se è stato aggiornato il documento
if
(risultato.ModifiedCount == 0)
{
MessageBox.Show("Nessun
documento aggiornato. Verificare l'ID selezionato.");
return;
}
MessageBox.Show("File
aggiornato con successo.");
}
catch (MongoCommandException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}


Le opere pubblicate in questo blog sono sotto la licenza Creative Commons. Attribuzione- No commerciale e no derivate.