53 lines
1.7 KiB
C#
53 lines
1.7 KiB
C#
using Azure.Storage.Blobs;
|
|
|
|
// Lokales Hilfsprogramm für Azurite (UseDevelopmentStorage=true):
|
|
// <Dateipfad> lädt einen Import hoch; result <Blobname> liest dessen JSON-Prüfbericht.
|
|
if (args.Length == 2 && args[0] == "result")
|
|
{
|
|
// args[1] ist der beim Upload ausgegebene Blobname einschließlich der ursprünglichen Dateiendung.
|
|
var resultBlob = new BlobClient(
|
|
"UseDevelopmentStorage=true",
|
|
"results",
|
|
$"{args[1]}.json");
|
|
|
|
// Die Function verarbeitet Uploads asynchron; der Bericht kann daher noch fehlen.
|
|
if (!(await resultBlob.ExistsAsync()).Value)
|
|
{
|
|
Console.Error.WriteLine(
|
|
"Bericht noch nicht vorhanden. Prüfe das Function-Log und den Blobnamen.");
|
|
Environment.ExitCode = 1;
|
|
return;
|
|
}
|
|
|
|
var download = await resultBlob.DownloadContentAsync();
|
|
Console.WriteLine(download.Value.Content.ToString());
|
|
return;
|
|
}
|
|
|
|
if (args.Length != 1 || !File.Exists(args[0]))
|
|
{
|
|
Console.Error.WriteLine("Bitte eine vorhandene Datei angeben.");
|
|
Environment.ExitCode = 1;
|
|
return;
|
|
}
|
|
|
|
var container = new BlobContainerClient(
|
|
"UseDevelopmentStorage=true",
|
|
"imports");
|
|
|
|
// Beide Container werden auch bei einer frisch gestarteten lokalen Storage-Umgebung angelegt.
|
|
await container.CreateIfNotExistsAsync();
|
|
|
|
var resultsContainer = new BlobContainerClient(
|
|
"UseDevelopmentStorage=true",
|
|
"results");
|
|
|
|
await resultsContainer.CreateIfNotExistsAsync();
|
|
|
|
// Die zufällige Kennung verhindert Namenskollisionen bei wiederholtem Upload derselben Datei.
|
|
var blobName = $"{Guid.NewGuid():N}-{Path.GetFileName(args[0])}";
|
|
var blob = container.GetBlobClient(blobName);
|
|
|
|
await blob.UploadAsync(args[0]);
|
|
|
|
Console.WriteLine($"Hochgeladen: imports/{blobName}"); |