94 lines
2.5 KiB
C#
94 lines
2.5 KiB
C#
using Application.Features.FileImageManager.Commands;
|
|
using Application.Features.FileImageManager.Queries;
|
|
using ASPNET.BackEnd.Common.Base;
|
|
using ASPNET.BackEnd.Common.Models;
|
|
using Infrastructure.FileImageManager;
|
|
using MediatR;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace ASPNET.BackEnd.Controllers;
|
|
|
|
[Route("api/[controller]")]
|
|
public class FileImageController : BaseApiController
|
|
{
|
|
public FileImageController(ISender sender) : base(sender)
|
|
{
|
|
}
|
|
|
|
[Authorize]
|
|
[HttpPost("UploadImage")]
|
|
public async Task<ActionResult<CreateImageResult>> UploadImageAsync(IFormFile file, CancellationToken cancellationToken)
|
|
{
|
|
if (file == null || file.Length == 0)
|
|
{
|
|
return BadRequest("Invalid file.");
|
|
}
|
|
|
|
using (var memoryStream = new MemoryStream())
|
|
{
|
|
await file.CopyToAsync(memoryStream, cancellationToken);
|
|
var fileData = memoryStream.ToArray();
|
|
var extension = Path.GetExtension(file.FileName).TrimStart('.');
|
|
|
|
var command = new CreateImageRequest
|
|
{
|
|
OriginalFileName = file.FileName,
|
|
Extension = extension,
|
|
Data = fileData,
|
|
Size = fileData.Length
|
|
};
|
|
|
|
var result = await _sender.Send(command, cancellationToken);
|
|
|
|
if (result?.ImageName == null)
|
|
{
|
|
return StatusCode(500, "An error occurred while uploading the image.");
|
|
}
|
|
|
|
return Ok(new ApiSuccessResult<CreateImageResult>
|
|
{
|
|
Code = StatusCodes.Status200OK,
|
|
Message = $"Success executing {nameof(UploadImageAsync)}",
|
|
Content = result
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
[Authorize]
|
|
[HttpGet("GetImage")]
|
|
public async Task<IActionResult> GetImageAsync(
|
|
[FromQuery] string imageName,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(imageName) || Path.GetExtension(imageName) == string.Empty)
|
|
{
|
|
imageName = "noimage.png";
|
|
}
|
|
|
|
var request = new GetImageRequest
|
|
{
|
|
ImageName = imageName
|
|
};
|
|
|
|
var result = await _sender.Send(request, cancellationToken);
|
|
|
|
if (result?.Data == null)
|
|
{
|
|
return NotFound("Image not found.");
|
|
}
|
|
|
|
var extension = Path.GetExtension(imageName).ToLower();
|
|
var mimeType = FileImageHelper.GetMimeType(extension);
|
|
|
|
return File(result.Data, mimeType);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|