使用google drive SDK下载文件
本文关键字:下载 文件 SDK drive google 使用 | 更新日期: 2023-09-27 18:13:50
我遵循了这个例子:
using Google.Apis.Authentication;
using Google.Apis.Drive.v2;
using Google.Apis.Drive.v2.Data;
......
......
/// <summary>
/// Download a file and return a string with its content.
/// </summary>
/// <param name="authenticator">
/// Authenticator responsible for creating authorized web requests.
/// </param>
/// <param name="file">Drive File instance.</param>
/// <returns>File's content if successful, null otherwise.</returns>
private System.IO.Stream DownloadFile(IAuthenticator authenticator, Google.Apis.Drive.v2.Data.File file)
{
if (!String.IsNullOrEmpty(file.DownloadUrl))
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(
new Uri(file.DownloadUrl));
authenticator.ApplyAuthenticationToRequest(request);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
return response.GetResponseStream();
}
else
{
Console.WriteLine(
"An error occurred: " + response.StatusDescription);
return null;
}
}
catch (Exception e)
{
Console.WriteLine("An error occurred: " + e.Message);
return null;
}
}
else
{
// The file doesn't have any content stored on Drive.
return null;
}
}
但是无法找到使用Google.Apis.Authentication
的命名空间因此输入参数IAuthenticator authenticator
无法解析。
我已经从Nuget安装了
Google api Client Library
Google.api.drive。v2 Client Library
不幸的是,我有同样的问题,你已经描述和API文档没有给什么IAuthenticator是足够的信息。正如rajanmhr47所说,它不再被支持,将被移除。
解决方案如下:
假设你有一个DriveService
实例变量,你用它来认证到Google Drive API服务器,你可以这样使用它来下载一个文件,你有权限:
注意:这些方法不实现任何错误检查。
异步版本:
public static async Task<byte[]> DownloadFile(DriveService driveService, string fileId)
{
var file = await driveService.Files.Get(fileId).ExecuteAsync();
return await driveService.HttpClient.GetByteArrayAsync(file.DownloadUrl);
}
同步版本:
public static byte[] DownloadFile(DriveService driveService, string fileId)
{
var file = driveService.Files.Get(fileId).Execute();
return driveService.HttpClient.GetByteArrayAsync(file.DownloadUrl).Result;
}
在这个链接中提到IAuthenticator不再被支持,它将在1.7.0测试版中被删除。考虑使用新的Google.Apis.Auth NuGet包中的UserCredential或ServiceAccountCredential,该包支持。net 4、。net for Windows、商店应用程序、Windows Phone 7.5和8以及可移植类库