首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换Google Drive UpdateMediaUpload中的文件

替换Google Drive UpdateMediaUpload中的文件
EN

Stack Overflow用户
提问于 2016-06-21 22:32:41
回答 1查看 1.2K关注 0票数 0

我不知道为什么文件的内容不会被更新。有谁能给点提示吗?

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

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

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

代码语言:javascript
复制
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);
    }
EN

回答 1

Stack Overflow用户

发布于 2019-09-20 20:44:12

如下所示使用作用域

代码语言:javascript
复制
 string[] scopes = new string[] {

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

我检查了上面的代码。问题出在ParentFolderId上。请删除此行

代码语言:javascript
复制
 body.Parents = new List<string>();
 body.Parents.Add(parent);

此作用域中不允许直接赋值。它应该与请求对象一起提到,比如:request.Parent ... bla bla

试一试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37947302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档