我正在 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 的了解不够。几天来我一直在研究和谷歌搜索,但我似乎找不到任何东西。任何指针将不胜感激。
文档看起来很清楚,首先创建一个文件夹,然后引用它的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