public async Task <ActionResult <UploadedScoreObjectResult> > UploadObject([FromForm] UploadingScoreItem uploadingScoreItem) { // File Signature を確認 _logger.LogDebug("{ScoreId}, {OriginalName}", uploadingScoreItem.ScoreId, uploadingScoreItem.OriginalName); _logger.LogDebug("Item: {FileName}, {Name}, {Length}, {Headers}, {ContentDisposition}, {ContentType}", uploadingScoreItem.Item.FileName, uploadingScoreItem.Item.Name, uploadingScoreItem.Item.Length, uploadingScoreItem.Item.Headers, uploadingScoreItem.Item.ContentDisposition, uploadingScoreItem.Item.ContentType); var auth = this.GetAuthorizerData(); var ownerId = auth.Sub; var adder = _scoreItemLogics.Adder; try { var response = await adder.AddAsync(ownerId, uploadingScoreItem); _logger.LogDebug("success : response : {Response}", response); return(response); } catch (NotSupportedItemFileException ex) { _logger.LogError(ex, "{Message}", ex.Message); return(StatusCode(ExtensionHttpStatusCodes.NotSupportedItemFile, new { message = ex.Message })); } }
public async Task <UploadedScoreObjectResult> AddAsync(Guid ownerId, UploadingScoreItem uploadingScoreItem) { var scoreId = uploadingScoreItem.ScoreId; var score = await GetDynamoDbScoreDataAsync(ownerId, scoreId); var access = score.score.Access == ScoreDatabaseConstant.ScoreAccessPublic ? ScoreObjectAccessControls.Public : ScoreObjectAccessControls.Private; await using var stream = uploadingScoreItem.Item.OpenReadStream(); var data = new byte[stream.Length]; await stream.ReadAsync(data); var orgName = uploadingScoreItem.Item.FileName; var response = await SaveObjectAsync(ownerId, scoreId, data, access); var thumbnail = response.Extra switch { ImagePngExtra p => new ScoreItemDatabaseItemDataImageThumbnail() { Size = p.Thumbnail.Size, ObjName = p.Thumbnail.ObjectName, }, Thumbnail t => new ScoreItemDatabaseItemDataImageThumbnail() { Size = t.Size, ObjName = t.ObjectName, }, _ => null, }; var totalSize = response.Size + (thumbnail?.Size ?? 0); ScoreItemDatabaseItemDataBase itemData = new ScoreItemDatabaseItemDataImage() { OwnerId = ownerId, ScoreId = scoreId, OrgName = orgName, ItemId = response.ItemId, ObjName = response.ObjectName, Size = response.Size, Thumbnail = thumbnail, TotalSize = totalSize, }; await CreateAsync(itemData); return(new UploadedScoreObjectResult() { ImageItemInfo = new ScoreImageItemInfo() { Size = itemData.Size, Thumbnail = thumbnail?.ObjName, ObjectName = itemData.ObjName, ItemId = itemData.ItemId, OriginalName = orgName, ScoreId = scoreId, TotalSize = itemData.TotalSize, ThumbnailSize = thumbnail?.Size ?? 0, }, }); }