public async Task DownloadFile(string targetPath, string targetFilename, string sasUri, bool append = false) { string targetFullPath = Path.Join(fixPath(targetPath), targetFilename); CloudAppendBlob blob = new CloudAppendBlob(new Uri(sasUri)); if (!append) { await blob.DownloadToFileAsync(targetFullPath, FileMode.Create); } else { if (!blob.ExistsAsync().Result) { throw new Exception($"Cannot download nonexistent blob file {targetFilename}"); } await blob.DownloadToFileAsync(targetFullPath, FileMode.Append); } }
public async Task DownloadFile(string targetPath, string targetFilename, string containerName, string filename, bool append = false) { string targetFullPath = Path.Join(fixPath(targetPath), targetFilename); CloudStorageAccount account = CloudStorageAccount.Parse(storageConnectionString); CloudBlobClient serviceClient = account.CreateCloudBlobClient(); var container = serviceClient.GetContainerReference(getContainerName(containerName)); CloudAppendBlob blob = container.GetAppendBlobReference(getFilepathForContainer(containerName, filename)); if (!append) { await blob.DownloadToFileAsync(targetFullPath, FileMode.Create); } else { if (!blob.ExistsAsync().Result) { throw new Exception($"Cannot download nonexistent blob file {targetFilename}"); } await blob.DownloadToFileAsync(targetFullPath, FileMode.Append); } }
private static async Task AppendBlobProcessAsync() { CloudStorageAccount storageAccount = null; CloudBlobContainer cloudBlobContainer = null; string sourceFile = null; string destinationFile = null; // Retrieve the connection string for use with the application. The storage connection string is stored // in an environment variable on the machine running the application called storageconnectionstring. // If the environment variable is created after the application is launched in a console or with Visual // Studio, the shell needs to be closed and reloaded to take the environment variable into account. string storageConnectionString = ConfigurationManager.AppSettings["StorageConnectionString"]; //Environment.GetEnvironmentVariable("StorageConnectionString"); //storageAccount = CloudStorageAccount.DevelopmentStorageAccount; // Check whether the connection string can be parsed. if (CloudStorageAccount.TryParse(storageConnectionString, out storageAccount)) { try { // Create the CloudBlobClient that represents the Blob storage endpoint for the storage account. ////CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient(); //127.0.0.1:10000/devstoreaccount1/testcont // Create a container called 'quickstartblobs' and append a GUID value to it to make the name unique. ////cloudBlobContainer = cloudBlobClient.GetContainerReference("testcontappendblob");// "quickstartblobs" + Guid.NewGuid().ToString()); ////await cloudBlobContainer.CreateIfNotExistsAsync(); ////Console.WriteLine("Created container '{0}'", cloudBlobContainer.Name); ////Console.WriteLine(); ////// Set the permissions so the blobs are public. ////BlobContainerPermissions permissions = new BlobContainerPermissions ////{ //// PublicAccess = BlobContainerPublicAccessType.Blob ////}; ////await cloudBlobContainer.SetPermissionsAsync(permissions); // Get a reference to the blob address, then upload the file to the blob. // Use the value of localFileName for the blob name. CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient(); cloudBlobContainer = cloudBlobClient.GetContainerReference("testcont"); cloudBlobContainer.CreateIfNotExists(); CloudAppendBlob cloudAppendBlob = cloudBlobContainer.GetAppendBlobReference("1.txt"); cloudAppendBlob.CreateOrReplace(); cloudAppendBlob.AppendText("Content added"); cloudAppendBlob.AppendText("More content added"); cloudAppendBlob.AppendText("Even more content added"); string appendBlobContent = cloudAppendBlob.DownloadText(); //cloudAppendBlob.UploadFromFile(sourceFile); // List the blobs in the container. Console.WriteLine("Listing blobs in container."); BlobContinuationToken blobContinuationToken = null; do { var results = await cloudBlobContainer.ListBlobsSegmentedAsync(null, blobContinuationToken); // Get the value of the continuation token returned by the listing call. blobContinuationToken = results.ContinuationToken; foreach (IListBlobItem item in results.Results) { Console.WriteLine(item.Uri); } } while (blobContinuationToken != null); // Loop while the continuation token is not null. destinationFile = sourceFile.Replace(".txt", "_DOWNLOADED.txt"); Console.WriteLine("Downloading blob to {0}", destinationFile); Console.WriteLine(); await cloudAppendBlob.DownloadToFileAsync(destinationFile, FileMode.Create); File.WriteAllText(sourceFile, "Hello, World, I am good, how is your health!"); await cloudAppendBlob.UploadFromFileAsync(sourceFile); await cloudAppendBlob.DeleteAsync(); } catch (StorageException ex) { Console.WriteLine("Error returned from the service: {0}", ex.Message); } finally { // Console.WriteLine("Press any key to delete the sample files and example container."); Console.ReadLine(); // Clean up resources. This includes the container and the two temp files. //Console.WriteLine("Deleting the container and any blobs it contains"); if (cloudBlobContainer != null) { // await cloudBlobContainer.DeleteIfExistsAsync(); } File.Delete(sourceFile); File.Delete(destinationFile); } } else { Console.WriteLine( "A connection string has not been defined in the system environment variables. " + "Add a environment variable named 'storageconnectionstring' with your storage " + "connection string as a value."); } }
public static void DownloadToFile(this CloudAppendBlob blob, string path, System.IO.FileMode mode) { blob.DownloadToFileAsync(path, mode).Wait(); }