using Firebase.Storage; using System; using System.IO; using System.Threading.Tasks; namespace ManagerService.Services { public class FirebaseStorageService { private readonly FirebaseStorage _firebaseStorage; public FirebaseStorageService() { // Remplace "your-project-id.appspot.com" par l'identifiant de ton bucket Firebase Storage _firebaseStorage = new FirebaseStorage("mymuseum-3b97f.appspot.com"); } public async Task UploadFileAsync(Stream fileStream, string fileName, string instanceId) { // Téléversement du fichier dans le dossier "uploads" var task = _firebaseStorage .Child("pictures") .Child(instanceId) .Child(fileName) .PutAsync(fileStream); // Optionnel: Suivre la progression du téléversement task.Progress.ProgressChanged += (s, e) => Console.WriteLine($"Progress: {e.Percentage} %"); // Attendre la fin du téléversement var downloadUrl = await task; return downloadUrl; } public async Task UploadBase64Async(string base64String, string fileName, string instanceId) { // Convertir la chaîne base64 en un tableau de bytes byte[] bytes = Convert.FromBase64String(base64String); // Créer un flux de mémoire à partir des bytes using (var stream = new MemoryStream(bytes)) { // Téléversement du fichier dans le dossier "uploads" var task = _firebaseStorage .Child("pictures") .Child(instanceId) .Child(fileName) .PutAsync(stream); // Optionnel: Suivre la progression du téléversement task.Progress.ProgressChanged += (s, e) => Console.WriteLine($"Progress: {e.Percentage} %"); // Attendre la fin du téléversement var downloadUrl = await task; return downloadUrl; } } } }