public bool SaveImageVariantData(string variantName, string Uri, int assetId) { try { AssetVariant assetVariant = new AssetVariant(); assetVariant.AssetId = assetId; assetVariant.AssetVariantName = variantName; assetVariant.BlobStoragePath = Uri; _DbContext.AssetVariants.Add(assetVariant); _DbContext.SaveChanges(); return(true); } catch (Exception ex) { return(false); } }
public async Task <ActionResult <Asset> > PostAsset([FromQuery] int folderId, IFormFile file) { var storageConnectionString = _configuration["ConnectionStrings:AzureStorageConnectionString"]; var visionKey = _configuration["VISION_KEY"]; var visionEndpoint = _configuration["VISION_ENDPOINT"]; string originalFileName = file.FileName; string ext = Path.GetExtension(originalFileName); string fileName = "asset_" + Guid.NewGuid().ToString() + ext; var storage = new StorageClient(storageConnectionString); var visionWorker = new VisionWorker(visionKey, visionEndpoint); using var stream = file.OpenReadStream(); // store the file in azure blob storage var blobClient = await storage.StoreFile("assets", fileName, stream, file.ContentType); // generate metadata and thumbnail await visionWorker.Run(blobClient.Uri.ToString()); // store metadata await storage.StoreMetadata(blobClient, visionWorker.Metadata); // store thumbnail var thumbnailBlobClient = await storage.StoreFile("thumbs", fileName, visionWorker.ThumbnailStream, "image/png"); // create the new Asset Asset asset = new Asset { FileName = fileName, DisplayName = visionWorker.Description, FolderId = folderId, PreviewUrl = thumbnailBlobClient.Uri.ToString() }; var originalVariant = new AssetVariant { AssetId = asset.AssetId, Url = blobClient.Uri.ToString(), VariantTypeId = 1 }; var thumbnailVariant = new AssetVariant { AssetId = asset.AssetId, Url = thumbnailBlobClient.Uri.ToString(), VariantTypeId = 2 }; asset.AssetVariants.Add(originalVariant); asset.AssetVariants.Add(thumbnailVariant); _context.Asset.Add(asset); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { if (AssetExists(asset.AssetId)) { return(Conflict()); } else { throw; } } return(CreatedAtAction("GetAsset", new { id = asset.AssetId }, asset)); }