Google Drive V3 API。创建文件夹并上传文件到里面

问题描述 投票:0回答:1

我正在 Unity 中构建一个创建 PDF 文件的移动应用程序。我希望该应用程序为要上传的文件创建一个文件夹。我发现下面的代码允许我上传文件并设置文件名,但这只是转到驱动器的根目录。我需要做什么来创建一个名为“PDF 文件”的文件夹,然后将新创建的文件添加到其中?

public async Task UploadToGoogleDriveAsync()
    {

        using (var client = new HttpClient())
        {
            Debug.Log(CloudData.instance.googleAccessToken);

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer",  CloudData.instance.googleAccessToken);
            //api endpoint
            var apiUri = new Uri("https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart");

            // read the file content 
            var imageBinaryContent = new ByteArrayContent(LandlordCertLayout.instance.PDFDocumentBytes());
            imageBinaryContent.Headers.Add("Content-Type", "application/pdf");

            // prepare the metadata content
            string metaContent = "{\"name\":\"" + LandlordCertLayout.instance.PDFName + "\"}";
            byte[] byteArray = Encoding.UTF8.GetBytes(metaContent);
            var metaStream = new ByteArrayContent(byteArray);
            metaStream.Headers.Add("Content-Type", "application/json; charset=UTF-8");

            // create the multipartformdata content, set the headers, and add the above content
            var multipartContent = new MultipartFormDataContent("myboundry");
            multipartContent.Headers.Remove("Content-Type");
            multipartContent.Headers.TryAddWithoutValidation("Content-Type", "multipart/related; boundary=myboundry");
            multipartContent.Add(metaStream, "myboundry");
            multipartContent.Add(imageBinaryContent, "myboundry");

            HttpResponseMessage result = await client.PostAsync(apiUri, multipartContent);

            Debug.Log("Uploaded " + result);
        }
    }

我尝试将内容类型更改为“application/vnd.google-apps.folder”,但我总是收到错误 400,而且我对 HttpClient 的了解不够。几天来我一直在研究和谷歌搜索,但我似乎找不到任何东西。任何指针将不胜感激。

c# unity3d google-drive-api
1个回答
0
投票

文档看起来很清楚,首先创建一个文件夹,然后引用它的id:

要在文件夹中创建文件,请使用 files.create 方法并在文件的 parents 属性中指定文件夹 ID。以下代码片段显示了如何使用客户端库在特定文件夹中创建文件:

// Upload file photo.jpg in specified folder on drive.
var fileMetadata = new Google.Apis.Drive.v3.Data.File()
{
    Name = "photo.jpg",
    Parents = new List<string>
    {
        folderId
    }
};

https://developers.google.com/drive/api/guides/folder#create_a_file_in_a_folder

© www.soinside.com 2019 - 2024. All rights reserved.