Skip to content

Instantly share code, notes, and snippets.

@henrikj242
Last active January 29, 2024 20:43
Show Gist options
  • Save henrikj242/af06ac41fc9554dab387c0bb3a994f85 to your computer and use it in GitHub Desktop.
Save henrikj242/af06ac41fc9554dab387c0bb3a994f85 to your computer and use it in GitHub Desktop.
Use the Google Cloud API to upload and download files to/from a bucket using explicit authentication in a C# app.
using Google.Apis.Auth.OAuth2; // Google.Apis.Auth --version 1.30.0
using Google.Cloud.Storage.V1; // Google.Cloud.Storage.V1
using System;
using System.IO;
using System.Runtime.InteropServices;
using static System.Console;
public static class Program
{
public static void Main(string[] args)
{
string message = "Dot Net example: Upload file to Google Cloud Bucket. And also download";
string bucketName = "my-bucket";
// Explicitly use service account credentials by specifying the private key file.
// The service account should have Object Manage permissions for the bucket.
GoogleCredential credential = null;
using (var jsonStream = new FileStream("credentials.json", FileMode.Open,
FileAccess.Read, FileShare.Read))
{
credential = GoogleCredential.FromStream(jsonStream);
}
var storageClient = StorageClient.Create(credential);
using (var fileStream = new FileStream("Program.cs", FileMode.Open,
FileAccess.Read, FileShare.Read))
{
storageClient.UploadObject(bucketName, "Program.cs", "text/plain", fileStream);
}
// List objects
foreach (var obj in storageClient.ListObjects(bucketName, ""))
{
Console.WriteLine(obj.Name);
}
// Download file
using (var fileStream = File.Create("Program-copy.cs"))
{
storageClient.DownloadObject(bucketName, "Program.cs", fileStream);
}
foreach (var obj in Directory.GetFiles("."))
{
Console.WriteLine(obj);
}
WriteLine("**Environment**");
WriteLine($"Platform: .NET Core 2.0");
WriteLine($"OS: {RuntimeInformation.OSDescription}");
WriteLine(message);
WriteLine();
}
}
@dckoma
Copy link

dckoma commented Jan 29, 2024

amazing! Thanks :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment