@sergeyiljin

Как получить на сервере файл изображения?

Загружаю изображение с компьютера, обрезаю его в canvas и получаю данные blob.Методом на JS (Vue-croppa) отправляю на сервер:
uploadCroppedImage() {
            this.myCroppa.generateBlob(
                blob => {
                    fetch('http://localhost:1255/account/addfile/', {
                        method: "POST",
                        body: blob,
                    }).then(function (response) {
                        if (response.ok) {
                            return alert("Отправлен!");
                        }
                    });
                },
                'image/jpeg',
                0.8
            );
        },

Код сервера:
[HttpPost]
        public async Task<IActionResult> AddFile([FromBody]IFormFile uploadedFile)
        {
            if (uploadedFile != null)
            {
                User user = await _userManager.FindByNameAsync(User.Identity.Name);
                var userImg = await _context.Users.Include(u => u.Images).Where(u => u.Id == user.Id).SingleAsync();
                var Counter = userImg.Images.Count;
 
                if (Counter > 2)
                {
                    TempData["photoMessage"] = "В Вашем профиле должно быть не более трёх фотографий!";
                    return RedirectToAction("profile", "home");
                }
                else
                {
                    var name = Guid.NewGuid() + uploadedFile.FileName;
                    string path = "/userPhotos/" + name;
 
                    using (var fileStream = new FileStream(_appEnvironment.WebRootPath + path, FileMode.Create))
                    {
                        await uploadedFile.CopyToAsync(fileStream);
                    }
                    Image file = new Image { Name = name, Path = path, User = user };
                    await _context.Images.AddAsync(file);
                    await _context.SaveChangesAsync();
 
                    user.Avatar = path;
                    await _userManager.UpdateAsync(user);
                    return RedirectToAction("profile", "home");
                }
            }
            TempData["photoMessage"] = "Не выбрана фотография!";
            return RedirectToAction("profile", "home");
        }

Получаю ошибку в консоли браузера о том, что не поддерживаемый тип файла.
Как мне правильно сделать Ajax загрузку обрезанной фотографии на сервер?
  • Вопрос задан
  • 38 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы