I've got this method in AccountController
[HttpPut]
[Route("UserInfo")]
public async Task<IHttpActionResult> SetUserInfo(UserViewModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = UserManager.FindByName(User.Identity.Name);
user.UserName = model.UserName;
user.Email = model.Email;
user.FullName = model.FullName;
user.Skype = model.Skype;
user.PhoneNumber = model.PhoneNumber;
SaverPhotos.SavePhoto(model);
IdentityResult result = await UserManager.UpdateAsync(user);
if (!result.Succeeded)
{
return GetErrorResult(result);
}
return Ok();
}
public class UserViewModel
{
public string UserName { get; set; }
public string FullName { get; set; }
public string Email { get; set; }
public string Skype { get; set; }
public string PhoneNumber { get; set; }
public HttpPostedFileBase Avatar { get; set; }
}
And this ajax code in view:
$.ajax({
type: 'PUT',
contentType: false,
processData: false,
url: '/api/account/UserInfo',
data: data,
beforeSend: function (xhr) {
var token = window.app.model.get('tokenInfo');
xhr.setRequestHeader("Authorization", "Bearer " + token);
},
success: function (response) {
alert("Successfully saving info!");
},
error: function (response) {
alert('Error');
}
});
In form a lot of code, but file input looks:
<input type="file" name="Avatar" accept="image/png, image/jpeg, image/gif" id="profileAvatar"/>
And when i'm trying to save this form i get the error with code 415. Without contentType and proccessType with 'false' error was 500, but in debug mode I did not even get in method SetUserInfo. UserViewModel just null. Why? In the internet a lot of people says writing the UploadFileController to saving the images, but how then i set this image with user? Help please.