diff --git a/LiMan.Api/Controllers/FilesaveController.cs b/LiMan.Api/Controllers/FilesaveController.cs index bcc0a32..a086c96 100644 --- a/LiMan.Api/Controllers/FilesaveController.cs +++ b/LiMan.Api/Controllers/FilesaveController.cs @@ -4,8 +4,8 @@ using LiMan.DB.DBModels; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.StaticFiles; using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Logging; using NLog; using System; using System.Collections.Generic; @@ -43,7 +43,6 @@ namespace LiMan.APi.Controllers /// /// /// - /// public FilesaveController(IConfiguration configuration, ApiDataService DataService, IWebHostEnvironment env) { dataService = DataService; @@ -63,15 +62,61 @@ namespace LiMan.APi.Controllers #endregion Protected Properties - #region Public Methods + #region Protected Methods /// - /// Richiesta di registrazione ticket supporto + /// Calcolo correetto mimetype da nome file + /// + /// + /// + protected string GetMimeType(string fileName) + { + var provider = new FileExtensionContentTypeProvider(); + string contentType; + if (!provider.TryGetContentType(fileName, out contentType)) + { + contentType = "application/octet-stream"; + } + return contentType; + } + + #endregion Protected Methods + + #region Public Methods + + /// GET api/filesave/id/filename + /// + /// Recupera un singolo file dato ticket code + nome file (safe) + /// + /// Ticket code formato T00000000 + /// Nome file (safe) + /// Nome file da scaricare + /// + [HttpGet("{id}/{secureName}/{fileName}")] + public async Task DownloadFile(string id, string secureName, string fileName) + { + string relDir = _configuration["FileShare"]; + string ticketDir = Path.Combine(relDir, id); + var filePath = Path.Combine(ticketDir, secureName); + // verifico esistenza.. + if (System.IO.File.Exists(filePath)) + { + var bytes = await System.IO.File.ReadAllBytesAsync(filePath); + return File(bytes, GetMimeType(fileName), fileName); + } + else + { + return File(new byte[0], "text/plain", "Empty.txt"); + } + } + + /// + /// Elenco files assaociati a ticket supporto /// /// /// /// - // POST api/files/list/1 + // POST api/filesave/list/1 [HttpPost("list/{id}")] public async Task> list(int id, [FromBody] SupportRequest CurrRequest) {