public async Task <ActionResult> AddUserPhoto(int userId, [FromForm] UserPhotoRequest userPhotoRequest) { if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { throw new RestException(HttpStatusCode.Forbidden); } var photoAdded = await _serv.AddUserPhoto(userId, userPhotoRequest); return(CreatedAtRoute("GetPhoto", new { id = photoAdded.Id, userId = userId }, photoAdded)); }
// один контейнер для всех public async Task <(string Error, string Url)> UploadToBlob(UserPhotoRequest userPhoto) { try { BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName); await containerClient.CreateIfNotExistsAsync(); containerClient.SetAccessPolicy(PublicAccessType.Blob); BlobClient blobClient = containerClient.GetBlobClient(userPhoto.Photo.FileName); await blobClient.UploadAsync(userPhoto.Photo.OpenReadStream(), new BlobHttpHeaders { ContentType = "image/jpeg" }); return(null, blobClient.Uri.ToString()); } catch (Exception) { return("Blob connection error", null); } }
public async Task <PhotoCreateResponse> AddUserPhoto(int userId, UserPhotoRequest userPhotoRequest) { var photoUploadResult = _photoAccessor.AddPhoto(userPhotoRequest.File); var user = await _usersRepo.Get(userId); var photo = new Photo(); _mapper.Map(userPhotoRequest, photo); photo.Url = photoUploadResult.Url; photo.PublicId = photoUploadResult.PublicId; photo.IsMain = !user.Photos.Any(p => p.IsMain); photo.User = user; await _repo.Create(photo); return(_mapper.Map <PhotoCreateResponse>(photo)); }
public async Task <IActionResult> UploadToBlob([FromForm] UserPhotoRequest request) { var uploadToBlobResult = await _savedItemsService.UploadToBlob(request); if (uploadToBlobResult.Error == null) { return(Ok(uploadToBlobResult.Url)); } var problemDetals = new ProblemDetails { Status = 400, Title = uploadToBlobResult.Error }; return(new ObjectResult(problemDetals) { ContentTypes = { "application/problem+json" }, StatusCode = 400 }); }