Веб-API ASP.NET — это платформа для создания служб HTTP, к которым могут обращаться различные клиенты, включая веб-браузеры, мобильные устройства и настольные приложения. Он построен на основе платформы ASP.NET и использует протокол HTTP для легкой и эффективной передачи данных.

Веб-API обычно используются для предоставления данных и функций из веб-приложения другим системам или клиентам. Например, веб-сайт электронной коммерции может использовать веб-API для предоставления информации о продуктах и ​​уровнях запасов мобильным приложениям и другим сторонним системам.

Загрузка и скачивание файлов — обычное требование для веб-приложений. В веб-API ASP.NET загрузку и загрузку файлов можно реализовать с помощью класса HttpClient для отправки и получения файлов.

Чтобы загрузить файл в веб-API ASP.NET, мы создали службу, которая обрабатывает загрузку и загрузку файлов.

Вот полные шаги проекта,

Сервис для управления файлами

public interface IManageImage
    {
        Task<string> UploadFile(IFormFile _IFormFile);
        Task<(byte[], string, string)> DownloadFile(string FileName);
    }

Реализация услуги

public class ManageImage : IManageImage
    {
        public async Task<string> UploadFile(IFormFile _IFormFile)
        {
            string FileName = "";
            try
            {
                FileInfo _FileInfo = new FileInfo(_IFormFile.FileName);
                FileName = _IFormFile.FileName + "_" + DateTime.Now.Ticks.ToString() + _FileInfo.Extension;
                var _GetFilePath = Common.GetFilePath(FileName);
                using (var _FileStream = new FileStream(_GetFilePath, FileMode.Create))
                {
                    await _IFormFile.CopyToAsync(_FileStream);
                }
                return FileName;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task<(byte[], string, string)> DownloadFile(string FileName)
        {
            try
            {
                var _GetFilePath = Common.GetFilePath(FileName);
                var provider = new FileExtensionContentTypeProvider();
                if (!provider.TryGetContentType(_GetFilePath, out var _ContentType))
                {
                    _ContentType = "application/octet-stream";
                }
                var _ReadAllBytesAsync = await File.ReadAllBytesAsync(_GetFilePath);
                return (_ReadAllBytesAsync, _ContentType, Path.GetFileName(_GetFilePath));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }

API для обработки файлов

[ApiController]
    public class FileManagerController : ControllerBase
    {
        private readonly IManageImage _iManageImage;
        public FileManagerController(IManageImage iManageImage)
        {
            _iManageImage = iManageImage;
        }

        [HttpPost]
        [Route("uploadfile")]
        public async Task<IActionResult> UploadFile(IFormFile _IFormFile)
        {
            var result = await _iManageImage.UploadFile(_IFormFile);
            return Ok(result);
        }

        [HttpGet]
        [Route("downloadfile")]
        public async Task<IActionResult> DownloadFile(string FileName)
        {
            var result = await _iManageImage.DownloadFile(FileName);
            return File(result.Item1, result.Item2, result.Item2);
        }
    }

Добавление пользовательских служб в Program.cs

using API.FileProcessing.Service;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

builder.Services.AddTransient<IManageImage, ManageImage>();


var app = builder.Build();
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();

Получить каталог файлов

public static string GetCurrentDirectory()
        {
            var result = Directory.GetCurrentDirectory();
            return result;
        }
        public static string GetStaticContentDirectory()
        {
            var result = Path.Combine(Directory.GetCurrentDirectory(), "Uploads\\StaticContent\\");
            if (!Directory.Exists(result))
            {
                Directory.CreateDirectory(result);
            }
            return result;
        }
        public static string GetFilePath(string FileName)
        {
            var _GetStaticContentDirectory = GetStaticContentDirectory();
            var result = Path.Combine(_GetStaticContentDirectory, FileName);
            return result;
        }

Результаты проекта

Таким образом, загрузка и загрузка файлов являются общими функциями приложений веб-API ASP.NET. Чтобы реализовать загрузку и загрузку файлов, нам нужно использовать интерфейс IManageImage. Для загрузки файла мы можем использовать класс IActionResult для отправки содержимого файла обратно клиенту. Важно правильно проверять и дезинфицировать имя файла и содержимое, чтобы предотвратить уязвимости системы безопасности. Кроме того, мы можем использовать сторонние библиотеки, такие как AutoMapper, чтобы упростить сопоставление моделей данных с моделями просмотра, и Swagger для создания документации для нашего веб-API.

👋 Мое портфолио
🚀 Мой канал на Youtube
💻 https://github.com/shahedbd/API.FileProcessing