Загрузка изображения в .net core web api в лучшем виде - PullRequest
0 голосов
/ 07 ноября 2019

Мы загружаем изображения из .net core web api в Amazon Web Services (AWS), используя корзину S3. И изображение, которое мы получаем в теле запроса в строковом формате Base64 в контроллере веб-API.

Все это работает хорошо, однако у нас возникают проблемы с производительностью при загрузке изображения. Поскольку загрузка занимает много времени.

Что мы делаем, когда получаем строку Base64, мы конвертируем ее в байтовый массив и передаем байтовый массив в aws. Мы получаем как минимум 10 изображений в теле запроса.

В основном эти изображения отправляются через мобильное приложение, созданное с использованием ионных / угловых js.

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

Поскольку эти изображения имеют размер 6/7 МБ на изображение.

Ниже приведен код для того же.

public class SafetyController : ControllerBase
    {
        [HttpPost]

        public IActionResult Save([FromBody] SafetyModel safetyModel)
        {
            try
            {
                  SafetyBL safetybl = new SafetyBL();
                  safetybl.Save();

            }

            catch (Exception ex)
            {
               throw ex;
            }
        }
}


public class SafetyModel
    {
        public int Id { get; set; }
        public string SafetyName { get; set; }
        public string SafetyDescription { get; set; }
        public string Location { get; set; }
        public List<Photo> Photos { get; set; }
    }

public class Photo
{
  public string Base64{ get; set; }
}

public class Convert()
{
  Public byte[] ConvertToByteArray(string base64)
    {
        return Convert.FromBase64String(base64);
    }
}

1 Ответ

2 голосов
/ 07 ноября 2019

Для повышения производительности вам необходимо загружать файлы с потоковой передачей, как описано в docs

Чтобы упростить эту задачу, см. Пакет UploadStream .

Также используйте поток вместо байтового массива везде, где это возможно. Я считаю, что S3 ведро SKD имеет перегрузку для потока

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...