Google 驱动器 API v3 在特定文件夹中查找文件
Google Drive API v3 find files within specific folder
我正在四处搜索,试图找到一种方法来完成这个简单的任务。我可能遗漏了什么。
我正在通过桌面应用程序从驱动器下载文件并将它们保存到本地主机。我有两个问题:
首先,我将 y 驱动器用于多种用途,因此我只想下载特定文件夹中包含的文件。我需要一种方法来确定文件是否在文件夹中,以便我可以决定是否下载它。
这是我目前所拥有的...
var service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// Define parameters of request.
FilesResource.ListRequest listRequest = service.Files.List();
listRequest.PageSize = 100;
listRequest.Fields = "nextPageToken, files(id, name)";
// List files.
IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute().Files;
Console.WriteLine("Files:");
if (files != null && files.Count > 0)
{
foreach (var file in files)
{
Console.WriteLine("{0} ({1})", file.Name, file.Id);
if (file.Name == "APIDSWelcome.txt")
{
id = file.Id;
if (file.MimeType == "application/vnd.google-apps.folder")
{
}
}
}
foreach (var file in files)
{
if (file.Parents.Contains(id))
{
//download
其次,我找到了下载文件的方法,但我不确定下载完成后它们是否可用。我如何告诉应用程序将文件保存到本地主机上的特定位置?这是我用于下载的代码...
var fileId = file.Id;
var request = service.Files.Get(fileId);
var stream = new System.IO.MemoryStream();
// Add a handler which will be notified on progress changes.
// It will notify on each chunk download and when the
// download is completed or failed.
request.MediaDownloader.ProgressChanged += (Google.Apis.Download.IDownloadProgress progress) =>
{
switch (progress.Status)
{
case DownloadStatus.Downloading:
{
Console.WriteLine(progress.BytesDownloaded);
break;
}
case DownloadStatus.Completed:
{
Console.WriteLine("Download complete.");
break;
}
case DownloadStatus.Failed:
{
Console.WriteLine("Download failed.");
break;
}
}
};
request.Download(stream);
}
}
}
else
{
Console.WriteLine("No files found.");
}
感谢您的帮助!
你下载进去了
request.Download(stream)
那它去哪儿了?
https://msdn.microsoft.com/en-us/library/sfezx97z(v=vs.110).aspx
此方法允许您打开一个对话框,以便您可以将文件保存到您想要的位置。
您似乎已经在检查文件夹是否为空,或者是否包含以下内容:
/ List files.
IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute().Files;
Console.WriteLine("Files:");
if (files != null && files.Count > 0)
{
foreach (var file in files)
{
Console.WriteLine("{0} ({1})", file.Name, file.Id);
if (file.Name == "APIDSWelcome.txt")
{
id = file.Id;
if (file.MimeType == "application/vnd.google-apps.folder")
{
}
}
}
如果您认为它不起作用,您应该在此处进行调试。你在这里得到结果吗?当你写iList的内容时,你看到了什么?它真的有人口吗?如果你得到信息,插入一个断点。
我正在四处搜索,试图找到一种方法来完成这个简单的任务。我可能遗漏了什么。
我正在通过桌面应用程序从驱动器下载文件并将它们保存到本地主机。我有两个问题:
首先,我将 y 驱动器用于多种用途,因此我只想下载特定文件夹中包含的文件。我需要一种方法来确定文件是否在文件夹中,以便我可以决定是否下载它。
这是我目前所拥有的...
var service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// Define parameters of request.
FilesResource.ListRequest listRequest = service.Files.List();
listRequest.PageSize = 100;
listRequest.Fields = "nextPageToken, files(id, name)";
// List files.
IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute().Files;
Console.WriteLine("Files:");
if (files != null && files.Count > 0)
{
foreach (var file in files)
{
Console.WriteLine("{0} ({1})", file.Name, file.Id);
if (file.Name == "APIDSWelcome.txt")
{
id = file.Id;
if (file.MimeType == "application/vnd.google-apps.folder")
{
}
}
}
foreach (var file in files)
{
if (file.Parents.Contains(id))
{
//download
其次,我找到了下载文件的方法,但我不确定下载完成后它们是否可用。我如何告诉应用程序将文件保存到本地主机上的特定位置?这是我用于下载的代码...
var fileId = file.Id;
var request = service.Files.Get(fileId);
var stream = new System.IO.MemoryStream();
// Add a handler which will be notified on progress changes.
// It will notify on each chunk download and when the
// download is completed or failed.
request.MediaDownloader.ProgressChanged += (Google.Apis.Download.IDownloadProgress progress) =>
{
switch (progress.Status)
{
case DownloadStatus.Downloading:
{
Console.WriteLine(progress.BytesDownloaded);
break;
}
case DownloadStatus.Completed:
{
Console.WriteLine("Download complete.");
break;
}
case DownloadStatus.Failed:
{
Console.WriteLine("Download failed.");
break;
}
}
};
request.Download(stream);
}
}
}
else
{
Console.WriteLine("No files found.");
}
感谢您的帮助!
你下载进去了
request.Download(stream)
那它去哪儿了?
https://msdn.microsoft.com/en-us/library/sfezx97z(v=vs.110).aspx
此方法允许您打开一个对话框,以便您可以将文件保存到您想要的位置。
您似乎已经在检查文件夹是否为空,或者是否包含以下内容:
/ List files.
IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute().Files;
Console.WriteLine("Files:");
if (files != null && files.Count > 0)
{
foreach (var file in files)
{
Console.WriteLine("{0} ({1})", file.Name, file.Id);
if (file.Name == "APIDSWelcome.txt")
{
id = file.Id;
if (file.MimeType == "application/vnd.google-apps.folder")
{
}
}
}
如果您认为它不起作用,您应该在此处进行调试。你在这里得到结果吗?当你写iList的内容时,你看到了什么?它真的有人口吗?如果你得到信息,插入一个断点。