如何验证仅使用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;
}
您必须添加验证,如下面的链接所示,以检查收到的ByteArray,否则返回BadRequest
。如何检查如果字节数组是一个有效的图像?