Как сохранить изображение холста в .net core 2.1 - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь отправить изображение большого двоичного объекта javascript путем захвата из элемента video в метод контроллера в ASP.NET Core 2.1.

Я успешно захватил изображение, и из функции captureimage я передаю BLOB-объектконтроллер, я использую этот код:

и из метода действия контроллера я не знаю, как сохранить изображение.

спасибо за помощь.

          function captureimage(){

            var video = document.querySelector(videoId);
            canvas.width = video.videoWidth;
            canvas.height = video.videoHeight;
            canvas.getContext('2d').drawImage(video, 0, 0);
            //trigger the registered vall back with the blob
            canvas.toBlob(
              var formdata = new FormData();
            formdata.append("image", blob);

            return $.ajax({
                type: "POST",
                dataType: 'json',
                url: `Info/SaveImage',
                contentType: false,
                processData: false,
                data: formdata
              }).then(function () {

               });
            );

    public async Task<ActionResult> SaveImage(IFormFile image)
    {
          //how to save from IfromFile.
    }

1 Ответ

0 голосов
/ 16 ноября 2018

Я не знаю, как сохранить изображение

Это зависит от того, где вы хотите сохранить изображение.

Для сохранения на диске сервера, вы можете попробовать код, как показано ниже:

[HttpPost("UploadFiles")]
public async Task<IActionResult> Post(List<IFormFile> files)
{
    long size = files.Sum(f => f.Length);

    // full path to file in temp location
    var filePath = Path.GetTempFileName();

    foreach (var formFile in files)
    {
        if (formFile.Length > 0)
        {
            using (var stream = new FileStream(filePath, FileMode.Create))
            {
                await formFile.CopyToAsync(stream);
            }
        }
    }

    // process uploaded files
    // Don't rely on or trust the FileName property without validation.

    return Ok(new { count = files.Count, size, filePath});
}

Для сохранения байта изображения в базе данных, попробуйте код, как показано ниже:

public async Task<IActionResult> Register(RegisterViewModel model)
{
    ViewData["ReturnUrl"] = returnUrl;
    if  (ModelState.IsValid)
    {
        var user = new ApplicationUser {
          UserName = model.Email,
          Email = model.Email
        };
        using (var memoryStream = new MemoryStream())
        {
            await model.AvatarImage.CopyToAsync(memoryStream);
            user.AvatarImage = memoryStream.ToArray();
        }
    // additional logic omitted

    // Don't rely on or trust the model.AvatarImage.FileName property 
    // without validation.
}
...