public Uri UploadFileToBlob(BlobUploadParameters parameters) { StorageAccountGetKeysResponse keys = StorageManagementClient.StorageAccounts.GetKeys(parameters.StorageName); string storageKey = keys.PrimaryKey; StorageAccountGetResponse storageService = StorageManagementClient.StorageAccounts.Get(parameters.StorageName); Uri blobEndpointUri = storageService.StorageAccount.Properties.Endpoints[0]; return UploadFile(parameters.StorageName, GeneralUtilities.CreateHttpsEndpoint(blobEndpointUri.ToString()), storageKey, parameters); }
public Uri UploadFileToBlob(BlobUploadParameters parameters) { StorageAccountGetKeysResponse keys = StorageManagementClient.StorageAccounts.GetKeys(parameters.StorageName); string storageKey = keys.PrimaryKey; StorageAccountGetResponse storageService = StorageManagementClient.StorageAccounts.Get(parameters.StorageName); Uri blobEndpointUri = storageService.StorageAccount.Properties.Endpoints[0]; return(UploadFile(parameters.StorageName, GeneralUtilities.CreateHttpsEndpoint(blobEndpointUri.ToString()), storageKey, parameters)); }
private Uri UploadFile(string storageName, Uri blobEndpointUri, string storageKey, BlobUploadParameters parameters) { var credentials = new StorageCredentials(storageName, storageKey); var client = new CloudBlobClient(blobEndpointUri, credentials); string blobName = parameters.FileRemoteName; if (string.IsNullOrEmpty(blobName)) { blobName = string.Format( CultureInfo.InvariantCulture, "{0}_{1}", DateTime.UtcNow.ToString("yyyyMMdd_HHmmss", CultureInfo.InvariantCulture), Path.GetFileName(parameters.FileLocalPath)); } CloudBlobContainer container = client.GetContainerReference(parameters.ContainerName); var wasCreated = container.CreateIfNotExists(); if (wasCreated && parameters.ContainerPublic) { container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); } CloudBlockBlob blob = container.GetBlockBlobReference(blobName); if (blob.Exists()) { if (parameters.OverrideIfExists) { blob.DeleteIfExists(); } else { throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Commands.Common.Properties.Resources.BlobAlreadyExistsInTheAccount, blobName)); } } using (FileStream readStream = File.OpenRead(parameters.FileLocalPath)) { blob.UploadFromStream(readStream, AccessCondition.GenerateEmptyCondition(), parameters.BlobRequestOptions); } blob = container.GetBlockBlobReference(blobName); string sasContainerToken = string.Empty; if (!parameters.ContainerPublic) { //Set the expiry time and permissions for the blob. //Start time is specified as a few minutes in the past, to mitigate clock skew. //The shared access signature will be valid immediately. SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy(); sasConstraints.SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-5); sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddHours(parameters.SasTokenDurationInHours); sasConstraints.Permissions = SharedAccessBlobPermissions.Read; //Generate the shared access signature on the blob, setting the constraints directly on the signature. sasContainerToken = blob.GetSharedAccessSignature(sasConstraints); } string fullUrl = client.BaseUri + parameters.ContainerName + client.DefaultDelimiter + blobName + sasContainerToken; return(new Uri(fullUrl)); }
private Uri UploadFile(string storageName, Uri blobEndpointUri, string storageKey, BlobUploadParameters parameters) { var credentials = new StorageCredentials(storageName, storageKey); var client = new CloudBlobClient(blobEndpointUri, credentials); string blobName = parameters.FileRemoteName; if (string.IsNullOrEmpty(blobName)) { blobName = string.Format( CultureInfo.InvariantCulture, "{0}_{1}", DateTime.UtcNow.ToString("yyyyMMdd_HHmmss", CultureInfo.InvariantCulture), Path.GetFileName(parameters.FileLocalPath)); } CloudBlobContainer container = client.GetContainerReference(parameters.ContainerName); var wasCreated = container.CreateIfNotExists(); if (wasCreated && parameters.ContainerPublic) { container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); } CloudBlockBlob blob = container.GetBlockBlobReference(blobName); if (blob.Exists()) { if (parameters.OverrideIfExists) { blob.DeleteIfExists(); } else { throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Commands.Common.Properties.Resources.BlobAlreadyExistsInTheAccount, blobName)); } } using (FileStream readStream = File.OpenRead(parameters.FileLocalPath)) { blob.UploadFromStream(readStream, AccessCondition.GenerateEmptyCondition(), parameters.BlobRequestOptions); } blob = container.GetBlockBlobReference(blobName); string sasContainerToken = string.Empty; if (!parameters.ContainerPublic) { //Set the expiry time and permissions for the blob. //Start time is specified as a few minutes in the past, to mitigate clock skew. //The shared access signature will be valid immediately. SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy(); sasConstraints.SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-5); sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddHours(parameters.SasTokenDurationInHours); sasConstraints.Permissions = SharedAccessBlobPermissions.Read; //Generate the shared access signature on the blob, setting the constraints directly on the signature. sasContainerToken = blob.GetSharedAccessSignature(sasConstraints); } string fullUrl = client.BaseUri + parameters.ContainerName + client.DefaultDelimiter + blobName + sasContainerToken; return new Uri(fullUrl); }