ASP.NET & Angular 7: поместите картинку в базу данных - PullRequest
1 голос
/ 07 июня 2019

Я пытаюсь загрузить изображение с помощью API, но каждый раз появляется одна и та же ошибка:

"Ошибка чтения байтов. Неожиданный токен: StartObject. Путь 'picture'"

изображение объявлено как byte[] в сущности ASP.NET, и я использую formdata, чтобы опубликовать изображение в угловом

Угловом коде:

onFileChanged(event) {
  this.selectedFile = event.target.files[0]
}

adduser() {
  this.fd = new FormData();
  this.fd.append('picture', this.selectedFile)
  this.user.firstname = this.firstname;
  this.user.lastname = this.lastname;
  this.user.password = this.pass;
  this.user.userName = this.email;
  this.user.type = this.role;
  this.user.picture = this.fd;


  alert(this.user.picture)

  this.auth.adduser(this.user).subscribe(Response => {
    console.log(Response);
    this.route.navigate(['login']);
  }, error => {
    console.log(error)
  });
} 

.Net код:

[HttpPost]
public async Task < Object > PostAdmin([FromBody] UserModel model) {
    {
      var profile = new Profile() {
        UserName = model.UserName,
          lastname = model.lastname,
          address = model.address,
          firstname = model.firstname,

          picture = model.picture,
          phone = model.phone,
          university = model.university,
          Type = model.Type
      };

      using(var stream = new MemoryStream()) {
        profile.picture = stream.ToArray();
      }

      var user = await _userManager.FindByNameAsync(profile.UserName);
      if (user != null) {
        return Ok(new {
          status = false
        });
      }

      try {
        var result = await _userManager.CreateAsync(profile, model.Password);
        var role = await _userManager.AddToRoleAsync(profile, model.Type);
        return Ok(result);
      }
      catch (Exception e) {
        return BadRequest(new {
          status = false, message = e.Message
        });
      }  
...