Witam. Męczę się od rana ze zwracaniem obrazka poprzez API. Mam akcje na upload obrazka która przyjmuje IFormFile jako parametr.
var userID = HttpContext.User.GetUserId();
byte[] image = file.GetBytes();
var command = new UploadCategoryImageCommand(userID, file.FileName, image);
var response = await _mediator.Send(command);
return GetResponse(response);
Tutaj zwrócenie tablicy bajtów
public static byte[] GetBytes(this IFormFile file)
{
using (MemoryStream ms = new MemoryStream())
{
file.CopyTo(ms);
return ms.ToArray();
}
}
I to leci do bazy. I jest ok, tzn zapisuje. Teraz jak chce pobrać to i wyświetlić na froncie (React) to mi nie działa. Tzn do frontu zwracam taki viewmodel
public string Id { get; set; }
public string CategoryName { get; set; }
public string ParentId { get; set; }
public byte[] Image { get; set; } (jak zamienie na string i zrobię konwersje na base64 też lipa)
Czyli nie zwracam tylko i wyłączenie samego obrazka ale też kilka innych informacji więc nie mogę zrobić return file.
Moim zamiarem jest zwrócenie na widok obrazka w postaci base64 czyli coś w tym stylu
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..
Teraz pytanie jak to zrobić, bo żadne konwersje z tablicy bytów na base64String nie dają poprawnego resultatu. Czyli coś tam się zwraca ale obrazka nie wyświetla (zły base64 string).
Z tego co widziałem w klasycznym .net core MVC zwracają na widok właśnie tablice byte w viewmodelu a mi to nie działa na api.
Jak próbuje w controllerze skonwertować na base64 (przed zapisem do bazy) to mam zupełnie inny wynik niż np w jakimś konwerterze online.
Jak to rozwiązać bo już kończą mi się pomysły :/