using GB5Shared.FileUpload; using Microsoft.AspNetCore.Mvc; namespace FrameworkSL.Controllers.FileUpload { [ApiController] [Route("api/upload")] public class UploadService : ControllerBase { private readonly FileStorage _store; public UploadService(FileStorage store) { _store = store; } [HttpPost("excel")] public async Task UploadExcel(IFormFile file) => await Save(file, "excel"); [HttpPost("csv")] public async Task UploadCsv(IFormFile file) => await Save(file, "csv"); [HttpPost("pdf")] public async Task UploadPdf(IFormFile file) => await Save(file, "pdf"); [HttpPost("bulk")] public async Task UploadBulk(List files) { var results = new List(); foreach (var file in files) results.Add(await Save(file, "bulk")); return new { success = true, message = $"Uploaded {results.Count} files", results }; } [HttpGet("pdf/{fileId}")] public IActionResult GetPdf(string fileId) { var folder = "pdf"; var root = Path.Combine(Directory.GetCurrentDirectory(), "data", folder); if (!Directory.Exists(root)) return NotFound("Folder not found"); var filePath = Directory.GetFiles(root, $"{fileId}_*").FirstOrDefault(); if (filePath == null) return NotFound("File not found"); var bytes = System.IO.File.ReadAllBytes(filePath); return File( bytes, "application/pdf", Path.GetFileName(filePath) ); } private async Task Save(IFormFile file, string folder) { if (file == null || file.Length == 0) return UploadResponse.Fail("Empty file"); var id = await _store.SaveAsync( file.OpenReadStream(), file.FileName, folder ); return UploadResponse.Ok(id); } } }