65 lines
2.1 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|