如何验证仅使用asp.net web api上传的图像

本文关键字:api web net 图像 asp 何验证 验证 | 更新日期: 2023-09-27 18:01:33

我一直在使用asp.net web api上传图像到azure blob存储。代码控制器代码看起来像下面这样,这是我在网上搜索到的(不记得刚才在哪里了)。不管怎样,这很有效。然而,由于其他文件比图像可以上传到azure,我想有一种方法来检查如果文件是一个图像。我看到别人问这个,但不能实现它使用下面的代码。

如何验证如果文件是使用下面的代码图像?如果可能的话,验证这一点的最佳实践/最安全的方法是什么?任何帮助或输入感激。

编辑

更新了我试图实现的代码,不工作,虽然

    [HttpPost]
    [Route("api/uploadImage")]
    [ResponseType(typeof(List<BlobUploadModel>))]
    public async Task<IHttpActionResult> PostBlobUpload()
    {
        try
        {
            // This endpoint only supports multipart form data
            if (!Request.Content.IsMimeMultipartContent("form-data"))
            {
                return StatusCode(HttpStatusCode.UnsupportedMediaType);
            }
            //Added this code to convert to Byte and check if it is a image
            Byte[] byteArray = await Request.Content.ReadAsByteArrayAsync();
            bool isvalidImage = IsValidImage(byteArray);
            if (isvalidImage == false)
            {
                return BadRequest();
            }

            // Call service to perform upload, then check result to return as content
            var result = await _service.UploadBlobs(Request.Content);
            if (result != null && result.Count > 0)
            {
                return Ok(result);
            }
            // Otherwise
            return BadRequest();
        }
        catch (Exception ex)
        {
            return InternalServerError(ex);
        }
    }

    //Method that is being called to validate if image
     public static bool IsValidImage(byte[] bytes)
    {
        try
        {
            using (MemoryStream ms = new MemoryStream(bytes))
                Image.FromStream(ms);
        }
        catch (ArgumentException)
        {
            return false;
        }
        return true;
    }

如何验证仅使用asp.net web api上传的图像

您必须添加验证,如下面的链接所示,以检查收到的ByteArray,否则返回BadRequest。如何检查如果字节数组是一个有效的图像?