Search code examples
c#google-cloud-storagebucket

Google Cloud Storage: Deleting contents of a bucket


Im successfully uploading files to google storage like this:

Task upload = Task.Run(async () =>
{
    var clientSecrets = new ClientSecrets();
    clientSecrets.ClientId = "*****";
    clientSecrets.ClientSecret = "*****";

    var scopes = new[] { @"https://www.googleapis.com/auth/devstorage.full_control" };

    var cts = new CancellationTokenSource();
    var userCredential = await GoogleWebAuthorizationBroker.AuthorizeAsync(clientSecrets, scopes, "mail@example.com ", cts.Token);

    await userCredential.RefreshTokenAsync(cts.Token);

    var service = new StorageService();

    var bucketsQuery = service.Buckets.List("MyProjectName");
    bucketsQuery.OauthToken = userCredential.Token.AccessToken;
    var buckets = bucketsQuery.Execute();

    Bucket bucketToUpload = buckets.Items.FirstOrDefault();

    var newFile = new Google.Apis.Storage.v1.Data.Object()
    {
        Bucket = bucketToUpload.Name,
        Name = TargetFileName
    };


    FileStream fileStream = null;
    try
    {
        fileStream = new FileStream(TargetFilePath, FileMode.Open);
        var uploadRequest = new ObjectsResource.InsertMediaUpload(service, newFile, bucketToUpload.Name, fileStream, "audio/wav");
        uploadRequest.OauthToken = userCredential.Token.AccessToken;
        await uploadRequest.UploadAsync();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    finally
    {
        if (fileStream != null) fileStream.Dispose();
    }
});

await upload;

What I´d also like to do though, is deleting all the contents from a bucket. I can´t seem to find a way that works when searching the internet. Can anybody provide me with a code example?

Thanks a lot in advance!


Solution

  • I suggest using the C# client libraries. With these, deleting the files within a bucket could be achieved by using the following code:

    using System;
    using Google.Cloud.Storage.V1;
    
    namespace csharp {
        public class deletingFilesFromBucket
        {
            static void Main(string[] args)
            {
                    var storage = StorageClient.Create();
                    var bucketName = "MyBucket"
                    foreach (var storageObject in storage.ListObjects(bucketName, ""))
                    {
                            storage.DeleteObject(bucketName, storageObject.Name);
                            Console.WriteLine($"Deleted {storageObject.Name}.");
                    }
            }
        } 
    }
    

    You could find the reference for this in this document.