以更好的方式在.net Core Web API中上传图像

时间:2019-11-07 16:38:13

标签: c# amazon-web-services asp.net-core asp.net-web-api

我们正在使用S3存储桶将图像从.net核心Web api上传到Amazon Web Services(AWS)。以及我们在Web api控制器中以Base64字符串格式在请求正文中接收的图像。

这一切都很好,但是上传图像时我们遇到了性能问题。由于要花很多时间。

收到Base64字符串后,我们正在做什么,我们将其转换为字节数组并将字节数组传递给aws。我们在请求正文中至少收到10张图片。

这些图像基本上是通过使用ionic / angular js创建的移动应用发送的。

我们尝试将字节数组从UI直接发送到Web api,但仍然需要花费相同的时间。除了图像上传,我们还发送表单数据。

这些图片的大小为每张图片6/7 mb。

下面是相同的代码。

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 个答案:

答案 0 :(得分:2)

要获得更好的性能,您需要按照docs

中的说明通过流技术上传文件

要更轻松地实现此目的,请参见UploadStream软件包。

也尽可能使用流而不是字节数组。我相信S3存储桶SKD的流过载了