创建文件夹谷歌云存储桶.net客户端库

本文关键字:net 客户端 存储 文件夹 谷歌 创建 | 更新日期: 2023-09-27 18:18:13

我正在寻找一种方法来创建一个使用以下客户端库的桶内的文件夹:https://cloud.google.com/storage/docs/json_api/v1/json-api-dotnet-samples

我看了下面的线程,似乎我需要使用简单的方法上传。使用php在google云存储中创建文件夹

我看不到任何能够指定uploadtype的方法,所有请求似乎都是uploadType=resumable

看上面的帖子和提琴手的踪迹,我需要使用uploadType=media。有办法做到这一点吗?

创建文件夹谷歌云存储桶.net客户端库

在最新版本的API中更直接一些。你还是要确保像Salem建议的那样检查"/"。

     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));
        }

这对我有效!我不知道这样做是否正确,但这方面的内容还不够。

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();
    }

编辑:刚刚发现你可以直接上传文件到你的目标对象,如果目录/子目录不存在,上传功能会为你创建它们

你所需要做的就是把你想要的文件夹放在文件名

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);
                        }