【问题标题】:File downloaded with Google Drive API v3 has different content使用 Google Drive API v3 下载的文件内容不同
【发布时间】: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


【解决方案1】:
        Imports System.Net
        Imports System.ComponentModel

        Dim Str As IO.Stream
        Dim srRead As IO.StreamReader
        Dim NewVer As String = ""
        Dim req As WebRequest = WebRequest.Create("WebContentLink")

        Dim resp As WebResponse = req.GetResponse
        Str = resp.GetResponseStream
        srRead = New IO.StreamReader(Str)
        NewVer = srRead.ReadToEnd.Trim

vb 代码对我有用可能会有所帮助

【讨论】:

  • 欢迎来到 StackOverflow,感谢您的回答!如果您认为您的代码有帮助,请添加一些关于此代码为何起作用以及它应该起作用的见解,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 1970-01-01
  • 2023-02-06
  • 1970-01-01
  • 2020-05-23
  • 1970-01-01
相关资源
最近更新 更多