使用Gdrive中与我共享的文件ID更新文件,

时间:2013-10-17 05:41:46

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

C#App

我需要使用文件ID更新Gdrive中共享的文件。

代码:

public static Google.Apis.Drive.v2.Data.File UpdateFile(DriveService service, 
String fileId, String newTitle, String newDescription, String newMimeType, 
String newFilename, bool newRevision)
        {
        try
        {
            // First, retrieve the file from the Google Drive.
            Google.Apis.Drive.v2.Data.File file = service.Files.Get(fileId).Fetch();

            // Set the file's new metadata.
            file.Title = newTitle;
           // file.Description = newDescription;
            file.MimeType = newMimeType;

            // Get the file's new content and read it into a memory stream
            byte[] byteArray = System.IO.File.ReadAllBytes(newFilename);
            System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);

            // Call the Update API method passing in the updated information.
            FilesResource.UpdateMediaUpload request = service.Files.Update(file, fileId, stream, newMimeType);
            // Tell Google Drive if this is a new revision of the file or not.
            request.NewRevision = newRevision;
            // Execute the update
            request.Upload();

            // Get the response back from Google Drive and set the updatedFile 
            //object to the returned File informational object
            Google.Apis.Drive.v2.Data.File updatedFile = request.ResponseBody;
            // Return the updated file object so the caller has a handle on it.
            return updatedFile;
        }

抛出错误:找不到文件

1 个答案:

答案 0 :(得分:0)

2件事:

  1. 请将库更新到最新版本。您可以从NuGet下载最新的驱动器API - http://www.nuget.org/packages/Google.Apis.Drive.v2/。 然后,您可以使用最新的上传API来解决几个错误。 另请注意,从1.4.0-beta我们将Fetch方法更改为Execute,因此您需要更改代码。 请记得同时安装Google.Apis.Authentication软件包(在下一个版本中,计划在几个星期之后,我们将提供一个新的Auth库,它将使OAuth2"跳舞更容易,并将会更容易支持其他Windows平台,如WinRT和WP)。

  2. 您确定错误是来自" request.Upload()"而不是来自" byte [] byteArray = System.IO.File.ReadAllBytes(newFilename);"或者" service.Files.Get(fileId).Fetch();"。你能附上确切的例外及其堆栈跟踪吗?

  3. 的Eyal