Dziś kod ułatwiający pracę w ASP.NET Core WebAPI.
Poniżej metoda rozszerzająca, która pozwala pobrać zawartość pliku przekazanego w żądaniu:

    public static class FormFileExtensions
    {
        /// <summary>
        /// Returns file content as byte array.
        /// Returns null if null input provided.
        /// </summary>
        /// <param name="pgmFile"></param>
        /// <returns></returns>
        public static byte[] ExtractFileContent(this IFormFile pgmFile)
        {
            byte[] pgmFileContent = null;
            if (pgmFile?.Length > 0)
            {
                using (var ms = new MemoryStream())
                {
                    pgmFile.CopyTo(ms);
                    pgmFileContent = ms.ToArray();
                }
            }
            return pgmFileContent;
        }
    }

Przykład użycia w kontrolerze:

        [Route("upload")]
        [HttpPost]
        public IActionResult UploadFile(IFormFile file)
        {
            byte[] fileContent = file.ExtractFileContent();

            //Przetwarzanie pliku

            return Ok();
        }

Nie zapominajmy o zagrożeniach wynikających z przyjmowania plików.
Szczególną ostrożność należy zachować, gdy API jest dostępne publicznie, a nie ukryte w wewnętrznej sieci organizacji.
Wskazówki dotyczące bezpieczeństwa podczas obsługi plików można znaleźć tutaj
https://docs.microsoft.com/pl-pl/aspnet/core/mvc/models/file-uploads?view=aspnetcore-5.0

Ogólne wskazówki dotyczące zagadnienia bezpieczeństwa API są dostępne tutaj
https://sekurak.pl/jak-zadbac-o-bezpieczenstwo-api-owasp-api-security-top-ten/

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *