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);
     }
 }
示例#2
0
        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));
        }