Я использую asp.net web api для загрузки изображений в хранилище azure blob. Код контроллера кода выглядит следующим образом и я нашел поиск в Интернете (не могу вспомнить, где было время назад). В любом случае это отлично работает. Однако, так как другие файлы, кроме изображений, могут быть загружены в лазурь, я бы хотел, чтобы проверить, является ли файл и образ. Я видел, как другие спрашивали об этом, но не смогли реализовать его, используя приведенный ниже код.Как проверить только изображения, загруженные с помощью asp.net web api?
Вопрос
Как проверить, является ли файл образа, используя приведенный ниже код? И если возможно, что было бы лучшей практикой/самым безопасным способом проверки этого? Любая помощь или ввод оцениваются.
EDIT
Обновлено с кодом я пытался реализовать, не работает, хотя
[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;
}
Как вы думаете, вы можете помочь в реализации этого решения в добавленном мной коде. Я новичок и не знаю, как использовать их вместе, спасибо за ссылку! – mattias
Что вы получаете в Request.Content, можете ли вы отлаживать и проверять? – GauravKP
Думаю, я нашел способ сделать это, не уверен, что лучше всего практиковать. Я добавил код Byte [] byteArray = await Request.Content.ReadAsByteArrayAsync(); так что я тогда могу проверить byteArray с кодом из вашей общей ссылки – mattias