コード例 #1
0
        public async Task <IActionResult> UpdatePersonAvatar([FromForm] UserAvatarModel model)
        {
            try {
                if (ModelState.IsValid)
                {
                    var requestHeaders = HttpContext.Request.Headers;
                    int userId         = 0;
                    if (requestHeaders.TryGetValue("Authorization", out StringValues token))
                    {
                        userId = JwtService.GetUserIdFromToken(JwtService.DecodeToken(token.ToString()));
                        if (userId < 1)
                        {
                            return(Unauthorized());
                        }
                    }
                    else
                    {
                        return(Unauthorized());
                    }
                    byte[] avatarImage;
                    using (var memoryStream = new MemoryStream()) {
                        await model.AvatarImage.CopyToAsync(memoryStream);

                        avatarImage = memoryStream.ToArray();
                    }
                    string guid = Guid.NewGuid().ToString();
                    string mime = model.AvatarImage.ContentType.Contains("/") ?
                                  model.AvatarImage.ContentType.Split("/")[1] :
                                  model.AvatarImage.ContentType;
                    string fileName = $"{guid}.{mime}";
                    string realPath;
                    try {
                        realPath = _personLogic.SavePersonsAvatar(fileName, avatarImage, userId);
                    } catch (Exception e) {
                        return(StatusCode(500, e));
                    }
                    if (string.IsNullOrWhiteSpace(realPath))
                    {
                        return(BadRequest());
                    }

                    return(Ok(realPath));
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            } catch (Exception e) {
                return(BadRequest(e));
            }
        }