【问题标题】:All file properties are null except Id and Name?除了 Id 和 Name,所有文件属性都为空?
【发布时间】:2019-06-18 14:49:42
【问题描述】:

将文件上传到我的移动应用程序的 appData 文件夹然后下载后,如果您查看 Google.Apis.Drive.v3.Data.File 属性,则所有属性都为空,除了 Id 和 Name 属性。我需要知道服务器修改了 DateTime,也许最后一个客户端修改了 DateTime,因为它可以从另一台设备上传到 Google Drive 应用程序文件夹。如何获取这些属性或在上传时设置它们,以便下次下载时可以与当前客户端文件进行比较?

我已经包含了我正在使用的上传代码,它非常适合上传。我曾尝试在代码的 fileMetadata 部分中将 ModifiedTime 设置为 DateTime.UtcNow,但随后 request.ResponseBody 返回 null。

            var fileMetadata = new Google.Apis.Drive.v3.Data.File()
            {
                Name = filename,
                Parents = new List<string>()
                {
                    "appDataFolder"
                }
            };

            FilesResource.CreateMediaUpload request;
            using (var stream = fileContent.AsMemoryStream())
            {
                request = service.Files.Create(fileMetadata, stream, MimeTypeLookup.GetMimeType(filename));
                request.Fields = "id";
                request.Upload();
            }

            var file = request.ResponseBody;
            Console.WriteLine("File ID: " + file.Id);

我希望看到 request.ResponseBody 返回一个 Google.Apis.Drive.v3.Data.File ,就像在没有设置任何日期的情况下上传时一样。任何人都可以帮助解决这个问题吗?我需要 DateTime,以便与当前本地文件进行比较。

史蒂夫

【问题讨论】:

  • 请注意 GDrive 会谎报日期和时间。它可能不是你想象的那样。

标签: c# google-api google-drive-api google-api-dotnet-client


【解决方案1】:

您已指定只需要 id 字段

request.Fields = "id";

试试

request.Fields = "*";

这会将所有字段返回给您。您可以随意使用它,但是您希望只返回您需要的数据。你可以在这里阅读更多关于它的信息https://developers.google.com/drive/api/v3/performance#partial-response

【讨论】:

  • 感谢现场的 DalmTo。所以我在 C# 测试 Winforms 应用程序中完成了所有工作。现在让它在 Xamarin.Forms Android、iOS 和 UWP 移动应用程序中运行。
  • @Orgbrat 请注意,Xamarin 和 UWP 不是受支持的平台。绝对有可能让它在这些平台上工作,但它可能不仅仅是工作;尤其是在使用一些授权代码时。
猜你喜欢
  • 1970-01-01
  • 2010-11-28
  • 1970-01-01
  • 2016-05-31
  • 1970-01-01
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 2017-08-24
相关资源
最近更新 更多