manager-service/ManagerService/Services/FirebaseStorageService.cs

65 lines
2.1 KiB
C#

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<string> 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<string> 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;
}
}
}
}