using Microsoft.AspNetCore.Mvc; using eprintServer.Requests; namespace ImglyNanoBana.Api.Controllers { [ApiController] [Route("api/[controller]")] public class UploadController : ControllerBase { private readonly IWebHostEnvironment _environment; ILogger _logger; public UploadController( IWebHostEnvironment environment, ILogger logger) { _environment = environment; _logger = logger; } [HttpPost("store-image")] public async Task StoreImage([FromBody] UploadRequest request) { try { var uploadsFolder = Path.Combine(_environment.WebRootPath, "uploads"); Directory.CreateDirectory(uploadsFolder); var fileName = $"{Guid.NewGuid()}.png"; var filePath = Path.Combine(uploadsFolder, fileName); // Download and save image from URL or base64 if (request.ImageUrl.StartsWith("data:")) { var base64Data = request.ImageUrl.Split(',')[1]; var imageBytes = Convert.FromBase64String(base64Data); await System.IO.File.WriteAllBytesAsync(filePath, imageBytes); } else { using var httpClient = new HttpClient(); var imageBytes = await httpClient.GetByteArrayAsync(request.ImageUrl); await System.IO.File.WriteAllBytesAsync(filePath, imageBytes); } var permanentUrl = $"{Request.Scheme}://{Request.Host}/uploads/{fileName}"; return Ok(new UploadResponse { PermanentUrl = permanentUrl, FileName = fileName, UploadedAt = DateTime.UtcNow }); } catch (Exception ex) { _logger.LogError(ex, "Error storing image"); return StatusCode(500, new { error = ex.Message }); } } } }