【发布时间】:2017-05-19 23:19:22
【问题描述】:
我是第一次使用 Google Drive API,我需要下载一个简单的 txt 文件,该文件的内容只有一行和版本号(如 2.5.1.0),但是当我下载文件并打开它,我得到了完全不同的东西。
另外,如果我只是使用任何浏览器下载文件,它就会有预期的内容,但当我通过我的应用程序下载它时却没有。
如果有任何建议,我将不胜感激。
这是我目前的代码:
private void CheckForUpdates()
{
GoogleDrive drive = new GoogleDrive();
string url = drive.GetFileURL("current.txt");
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
string tmpPath = Path.Combine(Path.GetTempPath(), "current.txt");
request.Timeout = 5000;
WebClient response = new WebClient();
response.DownloadFile(url, tmpPath);
}
public string GetFileURL(string fileName)
{
DriveService service = GetDriveService();
// Define parameters of request.
FilesResource.ListRequest listRequest = service.Files.List();
listRequest.PageSize = 10;
listRequest.Fields = "nextPageToken, files(id, name, parents, properties, shared, webContentLink, webViewLink, fullFileExtension, capabilities)";
listRequest.Q = string.Format("(name contains '{0}')", fileName);
IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute().Files;
if (files.Count > 0)
{
string url = files[0].WebContentLink;
string id = files[0].Id;
return url;
}
return "";
}
private DriveService GetDriveService()
{
UserCredential credential;
DriveService service;
using (var stream = new FileStream(_pathClave, FileMode.Open, FileAccess.Read))
{
string credPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
credPath = _pathResult;
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
}
// Create Drive API service.
service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
return service;
}
这是链接:https://drive.google.com/uc?id=0B3P8S21qYracclVaamM2Skp4bzA&export=download
【问题讨论】:
-
"但是当我下载文件并打开它时,我得到了完全不同的东西。"我们都很好奇你得到了什么。
-
我无法粘贴文件的所有内容,太长了。
-
哇。甚至没有一点线索它可能包含什么?一个 pastebin 链接?
-
您找到解决此问题的方法了吗?目前,我正在面对它。
标签: c# api file url google-drive-api