我在下面有一个简单的代码上传到谷歌驱动器,但我每次都得到response = null。我的身份验证工作,我能够列出文件,但不能上传或创建目录。 我需要一些额外的权限吗?我看过一些样品,我正在关注它们,但我的上传仍然无效。
如果有人能纠正我,那将是非常有帮助的。以下是我的上传代码。
public static Google.Apis.Drive.v2.Data.File uploadFile(DriveService service, string uploadFile, string parent = null)
{
if (System.IO.File.Exists(uploadFile))
{
Google.Apis.Drive.v2.Data.File body = new Google.Apis.Drive.v2.Data.File();
body.Title = System.IO.Path.GetFileName(uploadFile);
body.Description = "File uploaded by installed app";
body.MimeType = GetMimeType(uploadFile);
//body.Parents = new List<ParentReference>() { new ParentReference() { Id = parent } };
// File's content
byte[] byteArray = System.IO.File.ReadAllBytes(uploadFile);
System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);
try
{
FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, GetMimeType(uploadFile));
//request.Convert = true;
request.Upload();
Google.Apis.Drive.v2.Data.File f = request.ResponseBody;
Console.WriteLine(f.Id);
return f;
}
catch (Exception ex)
{
Console.WriteLine("An error occured: " + ex.Message);
return null;
}
}
else
{
Console.WriteLine("File does not exist: " + uploadFile);
return null;
}
}
需要这方面的指导,如果有人能帮助我,我真的很感激!
答案 0 :(得分:1)
我能够解决这个问题。我没有传递足够的范围,只是DriveService.Scope.Drive。我从string[] scopes = new string[] { DriveService.Scope.Drive };
更改为
string[] scopes = new string[] { DriveService.Scope.Drive,
DriveService.Scope.DriveAppdata,
DriveService.Scope.DriveAppsReadonly,
DriveService.Scope.DriveFile,
DriveService.Scope.DriveMetadataReadonly,
DriveService.Scope.DriveReadonly,
DriveService.Scope.DriveScripts };
答案 1 :(得分:0)
将文件上传到Google云端硬盘需要您使用Drive REST API。由于您已经拥有身份验证令牌,因此您只需要调用POST URL和其他需要设置的参数。
简单的上传案例将如下所示
POST /upload/drive/v2/files?uploadType=media HTTP/1.1
Host: www.googleapis.com
Content-Type: image/jpeg
Content-Length: number_of_bytes_in_file
Authorization: Bearer your_auth_token
JPEG data
还有其他uploadType
可供选择,所以只需选择能让您受益最多的东西。有关上传文件的更多信息,请参见V2 Official Documentation。他们的github repository中也提供了一个示例代码(虽然这是在JS中)。
希望这有帮助!