mindtester
@mindtester
делаю странные вещи..чаще на C#.. иногда за деньги

Загрузка файла в .Net Core 2 WebApi (из Postman), у кого есть успешный опыт?

по всем пунктам сабжа опыта нет (( за основу взята заметка https://janaks.com.np/file-upload-asp-net-core-web-api/
пытаюсь грузить из Postman (да, в вебовском фронтэнде вообще ноль, что есть то есть ((
варианты испробованных
атрибутов контроллера:
//[Consumes("multipart/from-data", "application/octet-stream")]
    [Consumes("application/json", "application/json-patch+json", "multipart/from-data", "application/x-www-form-urlencoded")]
    //[Consumes("application/json", "multipart/from-data")]
    //[Consumes("multipart/from-data")]
    [Produces("application/json")]
    [Route("api/[controller]")]
    [ApiController]
варианты заголовка метода:
//public async Task<IActionResult> PostAttachmentItem([FromBody] IFormFile file)
        //public async Task<IActionResult> PostAttachmentItem(IFormFile file)
        public async Task<IActionResult> PostAttachmentItem(List<IFormFile> files)
запрос в Postman
OBR1TCi.pngmwWM6mq.png


если используются атрибуты [Consumes("..")] и/или [FromBody] - даже не попадаем в тело метода ((( сразу идет отлуп 415 Unsupported Media Type. если убрать все атрибуты - в метод попадаем, но входной параметр (не важно IFormFile file или List<IFormFile> files) всегда равен null (((

хелпми плз! что я делаю не так? (даже если все - куда ломится к просветлению?! )))

ps https://docs.microsoft.com/ru-ru/aspnet/core/mvc/m... читал, пока не помогло (((
pps AspNetCore.Docs закачал, но там примеры на основе корки 1.1 (да еще и не собирается пример (((, а надо 2.* (((
  • Вопрос задан
  • 287 просмотров
Решения вопроса 1
mindtester
@mindtester Автор вопроса, куратор тега C#
делаю странные вещи..чаще на C#.. иногда за деньги
вопрос закрыт. Request.Form.Files найдено тут https://qa-help.ru/questions/aspnet-core-rc2-zagru...

ps
код на данный момент (все работат)
[HttpPost]
        public async Task<IActionResult> PostAttachmentItem()
        {
            var files = Request.Form.Files;
            long size = files.Sum(f => f.Length);
            foreach (var file in files)
                if (file.Length > 0)
                    using (var stream = new MemoryStream())
                    {
                        await file.CopyToAsync(stream);
                        db.AttachmentItems.Add(new AttachmentItem
                        {
                            FileName = file.FileName,
                            Body = stream.ToArray()
                        });
                    }
            await db.SaveChangesAsync();
            return Ok(new { count = files.Count, size });
        }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Мечел-Сервис Челябинск
от 60 000 до 140 000 ₽
ВЫМПЕЛ Москва
от 150 000 до 230 000 ₽
Mentalstack Санкт-Петербург
от 100 000 до 150 000 ₽
19 февр. 2020, в 02:24
500 руб./за проект
18 февр. 2020, в 23:53
8000 руб./за проект