Создать папку Google Cloud Storage Bucket .NET Client Library

Я ищу способ создать папку внутри ведра, используя следующую клиентскую библиотеку: https://cloud.google.com/storage/docs/json_api/v1/json-api-dotnet-образцы

Я просмотрел следующую ветку, и, похоже, мне нужно использовать простой метод загрузки. Создание папки в облачном хранилище Google ведра с помощью php

Я не вижу способа указать uploadtype, все запросы выглядят uploadType=resumable.

Глядя на вышеуказанный пост и трассировку скрипачей, мне нужно использовать uploadType=media. Есть ли способ сделать это?


person Boomerang    schedule 19.10.2015    source источник


Ответы (3)


В последней версии API это сделать немного проще. Вы все равно должны убедиться, что вы проверили "/", как предложил Салем.

     public void AddFolder(string folder)
        {
           StorageClient storageClient = StorageClient.Create();
           if (!FolderName.EndsWith("/"))
             FolderName += "/";         

          var content = Encoding.UTF8.GetBytes("");

           storageClient.UploadObject(bucketName, folder, "application/x-directory", new MemoryStream(content));

        }
person DazedandConfused    schedule 13.02.2017

Это сработало для меня! Не знаю, правильно ли это сделать, но этого недостаточно.

public void CreateDir(string FolderName)
    {
        if (!FolderName.EndsWith("/"))
            FolderName += "/";

        var uploadStream = new MemoryStream(Encoding.UTF8.GetBytes(""));
        Storage.Objects.Insert(
            bucket: BucketName,
            stream: uploadStream,
            contentType: "application/x-directory",
            body: new Google.Apis.Storage.v1.Data.Object() { Name = FolderName}
            ).Upload();
    }

РЕДАКТИРОВАТЬ: только что выяснилось, что вы можете напрямую загрузить файл в целевые объекты, и если каталоги / подкаталоги не существуют, функция загрузки создаст их для вас.

person Salem    schedule 12.09.2016

Все, что вам нужно сделать, это поместить нужные папки перед именем файла.

using (MemoryStream ms = new MemoryStream(System.Text.Encoding.ASCII.GetBytes(json)))
                        {
                            string fileName = $"/test/somefolder/{sourceId}_{DateTime.Now.ToString("yyyyMMddHHmmss")}.json";
                            await gcpClient.UploadObjectAsync(gcpBucketName, fileName, null, ms);
                        }
person user1152145    schedule 14.04.2021