替换Google Drive UpdateMediaUpload中的文件

时间:2016-06-21 14:32:41

标签: c# google-drive-api

我不知道,为什么文件内容不会更新。有人提示吗?

DriveFile.Id有效。源文件是可读的。创建和删除文件工作正常。但不是更新。

我已经阅读了从v2到v3的迁移使用了generell的Http-PATCH方法进行更新。这是答案。

我不想删除该文件并创建一个新文件。

public long DriveUpdateFile(string fileID, string filename, string description, string parent, string mimeType)
    {
        int lError = (int)Win32ErrorCode.ERROR_SUCCESS;
        if (System.IO.File.Exists(filename))
        {

            FilesResource.GetRequest get = m_Drive.Files.Get(fileID);
            File body = get.Execute();

            if(!string.IsNullOrEmpty(description))
                body.Description = description;
            if (!string.IsNullOrEmpty(mimeType))
                body.MimeType = mimeType;

            // v3 Sematics
            if (!string.IsNullOrEmpty(parent))
            {
                body.Parents = new List<string>();
                body.Parents.Add(parent);
            }

            try
            {
                // File's content.
                using (System.IO.FileStream sr = System.IO.File.OpenRead(filename))
                {
                    FilesResource.UpdateMediaUpload request = m_Drive.Files.Update(body, body.Id, sr, body.MimeType);
                    request.Upload();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: " + e.Message);
                lError = e.HResult;
            }
        }
        else
        {
            Console.WriteLine("File does not exist: " + filename);
            lError = (int)Win32ErrorCode.ERROR_FILE_NOT_FOUND;
        }
        return (lError);
    }

1 个答案:

答案 0 :(得分:0)

使用以下范围,

 string[] scopes = new string[] {

                                                 DriveService.Scope.Drive,
                                                 DriveService.Scope.DriveFile,
                                                 DriveService.Scope.DriveMetadata,
                                                 DriveService.Scope.DriveAppdata,
                                                 DriveService.Scope.DriveScripts
                };//DriveService.Scope.DriveReadonly

,然后检查上面的代码。问题是ParentFolderId。请删除此行

 body.Parents = new List<string>();
 body.Parents.Add(parent);
在此范围内不允许直接分配

。它应该与请求对象一起提及:request.Parent ... bla bla

然后尝试。