private static async Task <string> CreateBlob(TokenAcquisitionTokenCredential tokenCredential)
        {
            Uri        blobUri    = new Uri("https://blobstorageazuread123.blob.core.windows.net/sample-container/Blob1.txt");
            BlobClient blobClient = new BlobClient(blobUri, tokenCredential);

            string blobContents = "Blob created by Azure AD authenticated user.";

            byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);

            using (MemoryStream stream = new MemoryStream(byteArray))
            {
                await blobClient.UploadAsync(stream);
            }
            return("Blob successfully created");
        }
Exemplo n.º 2
0
        private static async Task <string> CreateBlob(TokenAcquisitionTokenCredential tokenCredential, IFormFile file)
        {
            Uri        blobUri    = new Uri("https://cshuicantonresturant.blob.core.windows.net/testclient/" + file.FileName);
            BlobClient blobClient = new BlobClient(blobUri, tokenCredential);

            // string blobContents = "Blob created by Azure AD authenticated user.";
            // byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);

            // using (MemoryStream ms = new MemoryStream())
            using (var stream = file.OpenReadStream())
            {
                await blobClient.UploadAsync(stream, overwrite : true);
            }
            return("Blob successfully created");
        }
Exemplo n.º 3
0
        private static async Task <Uri> GetUserDelegationSasBlob(TokenAcquisitionTokenCredential tokenCredential, string blobName)
        {
            // BlobServiceClient blobServiceClient =
            //     blobClient.GetParentBlobContainerClient().GetParentBlobServiceClient();
            Uri blobUri           = new Uri("https://cshuicantonresturant.blob.core.windows.net");
            var blobServiceClient = new BlobServiceClient(blobUri, tokenCredential);
            var containerClient   = blobServiceClient.GetBlobContainerClient("testclient");
            var blobClient        = containerClient.GetBlobClient(blobName);
            // Get a user delegation key for the Blob service that's valid for 7 days.
            // You can use the key to generate any number of shared access signatures
            // over the lifetime of the key.
            var userDelegationKey =
                await blobServiceClient.GetUserDelegationKeyAsync(DateTimeOffset.UtcNow,
                                                                  DateTimeOffset.UtcNow.AddDays(7));

            // Create a SAS token that's also valid for 7 days.
            BlobSasBuilder sasBuilder = new BlobSasBuilder()
            {
                BlobContainerName = blobClient.BlobContainerName,
                BlobName          = blobClient.Name,
                Resource          = "b",
                StartsOn          = DateTimeOffset.UtcNow,
                ExpiresOn         = DateTimeOffset.UtcNow.AddDays(7)
            };

            // Specify read and write permissions for the SAS.
            sasBuilder.SetPermissions(BlobSasPermissions.Read |
                                      BlobSasPermissions.Write);

            // Add the SAS token to the blob URI.
            BlobUriBuilder blobUriBuilder = new BlobUriBuilder(blobClient.Uri)
            {
                // Specify the user delegation key.
                Sas = sasBuilder.ToSasQueryParameters(userDelegationKey,
                                                      blobServiceClient.AccountName)
            };

            Console.WriteLine("Blob user delegation SAS URI: {0}", blobUriBuilder);
            Console.WriteLine();
            return(blobUriBuilder.ToUri());
        }
        public FileStreamResult OnGetBlob(string storageAccountName, string containerName, string path)
        {
            string accessToken    = _tokenAcquisition.GetAccessTokenForUserAsync(new string [] { "https://storage.azure.com/.default" }).Result;
            string storageAccount = "https://" + storageAccountName + ".blob.core.windows.net/" + containerName + "/" + path;
            Stream stream;
            string contentType;
            Uri    blobUri = new Uri(storageAccount);

            try
            {
                TokenCredential token      = new TokenAcquisitionTokenCredential(_tokenAcquisition);
                BlobClient      blobClient = new BlobClient(blobUri, token);

                try
                {
                    contentType = blobClient.GetProperties().Value.ContentType;
                    stream      = blobClient.OpenRead();
                }
                catch (Exception e)
                {
                    contentType = "application/json";
                    string exceptionString = e.Message.Replace(Environment.NewLine, " ");
                    string jsonBody        = "{\"Error\": \"" + exceptionString + "\"}";
                    stream = new MemoryStream(Encoding.ASCII.GetBytes(jsonBody));
                }
            }
            catch (Exception e)
            {
                contentType = "application/json";
                string exceptionString = e.Message.Replace(Environment.NewLine, " ");
                string jsonBody        = "{\"Error\": \"" + exceptionString + "\"}";
                stream = new MemoryStream(Encoding.ASCII.GetBytes(jsonBody));
            }

            return(new FileStreamResult(stream, contentType));
        }
 public AzureStorageProvider(TokenAcquisitionTokenCredential tokenAcquisitionTokenCredential,
                             IConfiguration configuration)
 {
     _tokenAcquisitionTokenCredential = tokenAcquisitionTokenCredential;
     _configuration = configuration;
 }
Exemplo n.º 6
0
        public static async Task <BlobDownloadInfo> GetThumbNail(AzureStorageConfig _storageConfig, TokenAcquisitionTokenCredential tokenCredential, TelemetryClient telemetryClient, string imageName)
        {
            Uri        blobUri    = new Uri(string.Format("https://{0}.blob.core.windows.net/{1}/{2}", _storageConfig.AccountName, _storageConfig.ImageContainer, imageName));
            BlobClient blobClient = new BlobClient(blobUri, tokenCredential, null);

            return(await blobClient.DownloadAsync());
        }
Exemplo n.º 7
0
        public static async Task <List <string> > GetThumbNailUrls(AzureStorageConfig _storageConfig, TokenAcquisitionTokenCredential tokenCredential, TelemetryClient telemetryClient, string pathBase)
        {
            List <string> thumbnailUrls = new List <string>();

            // Create a URI to the storage account
            Uri blobUri = new Uri(_storageConfig.FullAccountName);

            BlobServiceClient blobServiceClient = new BlobServiceClient(blobUri, tokenCredential, null);

            // Get reference to the container
            BlobContainerClient container = blobServiceClient.GetBlobContainerClient(_storageConfig.ImageContainer);

            if (container.Exists())
            {
                foreach (BlobItem blobItem in container.GetBlobs())
                {
                    if (IsImage(blobItem.Name))
                    {
                        string imageUrl = string.Format("{0}api/images/thumbnail?ImageName={1}", pathBase, blobItem.Name);
                        thumbnailUrls.Add(imageUrl);
                        telemetryClient.TrackTrace("Found Thumbnail - " + imageUrl);
                    }
                }
            }
            else
            {
                telemetryClient.TrackException(new ArgumentNullException(string.Format("Container {0} not found!", container.Name)));
                container.CreateIfNotExists(PublicAccessType.None, null, null);
            }

            return(await Task.FromResult(thumbnailUrls));
        }