Skip to content

Latest commit

 

History

History
83 lines (72 loc) · 2.86 KB

azure-blob.md

File metadata and controls

83 lines (72 loc) · 2.86 KB

Azure Blob Storage

BlobContainerClient container = new("CONNECTION_STRING", "$web");
BlobClient blob = container.GetBlobClient("demo.txt");

byte[] myData = /* demo data */;
using var stream = new MemoryStream(myData, writable: false);
blob.Upload(stream);
stream.Close();
private static StarRecord[] LoadStarRecords(BlobContainerClient container, string filename = "starRecords.json")
{
    BlobClient blob = container.GetBlobClient(filename);
    if (!blob.Exists())
	throw new InvalidOperationException($"file not found: {filename}");
    using MemoryStream stream = new();
    blob.DownloadTo(stream);
    string json = Encoding.UTF8.GetString(stream.ToArray());
    StarRecord[] records = IO.RecordsFromJson(json);
    return records;
}
private static void SaveStarRecords(StarRecord[] records, BlobContainerClient container, string filename = "starRecords.json")
{
    BlobClient blob = container.GetBlobClient(filename);
    string json = IO.RecordsToJson(records);
    byte[] bytes = Encoding.UTF8.GetBytes(json);
    using var stream = new MemoryStream(bytes, writable: false);
    blob.Upload(stream, overwrite: true);
    stream.Close();
}

Outdated Methods

// read a blob file into a string
public static string ReadBlobText(string containerName, string fileName)
{
	string connectionString = Environment.GetEnvironmentVariable("AzureWebJobsStorage", EnvironmentVariableTarget.Process);
	CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
	CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
	CloudBlobContainer container = blobClient.GetContainerReference(containerName);
	var thisBlob = container.GetBlockBlobReference(fileName);

	using var memoryStream = new MemoryStream();

	var blobRequestOptions = new BlobRequestOptions
	{
		ServerTimeout = TimeSpan.FromSeconds(30),
		MaximumExecutionTime = TimeSpan.FromSeconds(120),
		RetryPolicy = new ExponentialRetry(TimeSpan.FromSeconds(3), maxAttempts: 3),
	};

	thisBlob.DownloadToStream(memoryStream, null, blobRequestOptions);
	byte[] bytes = memoryStream.ToArray();
	string text = Encoding.Default.GetString(bytes);

	return text;
}
// append a string to an AppendBlob
public static void AppendBlob(string containerName, string fileName, string txt, bool lineBreakBefore = true)
{
	string connectionString = Environment.GetEnvironmentVariable("AzureWebJobsStorage", EnvironmentVariableTarget.Process);
	CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
	CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
	CloudBlobContainer container = blobClient.GetContainerReference(containerName);
	CloudAppendBlob appendBlob = container.GetAppendBlobReference(fileName);
	if (!appendBlob.Exists())
		appendBlob.CreateOrReplace();
	if (lineBreakBefore)
		appendBlob.AppendText("\n");
	appendBlob.AppendText(txt);
}