我正在使用v3 .Net Google Apis。这似乎应该是一个简单的任务,但我尝试过的所有方法似乎都没有效果。
通过执行此操作,我可以获得所需文件的文件资源-
var fileRequest = service.Files.Get(fileId);
fileRequest.Fields = "*";
var fileResponse = fileRequest.Execute();
但是后来我还无法真正找到下载文件的方法。如果我使用这个-
var exportRequest = service.Files.Export(fileResponse.Id, fileResponse.MimeType);
exportRequest.Download(stream);
它返回403禁止状态,并显示一条消息,指出导出仅适用于Google文档。
我已经尝试过-
var downloadTask = exportRequest.MediaDownloader.DownloadAsync(@"https://docs.google.com/uc?export=download&id=" + fileResponse.Id, file);
downloadTask.Wait();
但是它只是返回页面的标记供用户登录。我使用服务帐户创建了导出请求,因此不需要登录。
是否有使用V3 google API在.Net中进行此操作的示例?
[好吧,我实际上在发布此内容5分钟后就使它正常工作。这是我发现有效的内容(我知道我之前曾尝试过此方法,但是它不起作用,但是谁知道)-]
public static async Task DownloadFile(string fileId, DriveService service)
{
var fileRequest = service.Files.Get(fileId);
fileRequest.Fields = "*";
var fileResponse = fileRequest.Execute();
var exportRequest = service.Files.Get(fileResponse.Id);
//you would need to know the file size
var size = fileResponse.Size;
var file = new FileStream(fileResponse.Name, FileMode.OpenOrCreate, FileAccess.ReadWrite);
file.SetLength((long)size);
var response = await fileRequest.DownloadAsync(file);
if (response.Status == Google.Apis.Download.DownloadStatus.Failed)
{
Console.WriteLine("Download failed");
}
}