簡體   English   中英

重命名谷歌驅動器文件 C#

[英]Renaming a google drive file C#

我正在嘗試使用 google drive v3 Apis 重命名 google drive 文件。 這是我的代碼:

public async Task<File> RenameFile(String fileId,
             String newFilename)
        {
            try
            {
                DriveService service = await GetDriveService();
                // First retrieve the file from the API.
                Google.Apis.Drive.v3.Data.File file = service.Files.Get(fileId).Execute();

                // File's new metadata.
                // file.Name = newFilename;
                file.OriginalFilename = newFilename;
                File newFile = new File();
                newFile = file;
                // Send the request to the API.
                FilesResource.UpdateRequest request = service.Files.Update(newFile, fileId);
                request.Fields = "id, name, thumbnailLink";
                File uploadedFile = request.Execute();

                return uploadedFile;
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: " + e.Message);
                return null;
            }

這是拋出一個錯誤:

發生錯誤:Google.Apis.Requests.RequestError 資源正文包含不可直接寫入的字段。 [403] 錯誤 [消息[資源主體包括不可直接寫的字段。]位置[-]原因[fieldNotWritable]域[全局]]

請幫我解決這個問題,我嘗試了很多方法,但它不起作用。

我的驅動器和文件僅與單個用戶共享,並且我使用控制台自托管服務與驅動器交互,因此最終它是通過 API 使用驅動器的單個用戶。

您的 driveService.Files.Get(fileId).Execute() 請求返回一個帶有無法覆蓋的 file.Id 的對象。 因此,將其設置為空。

        private static void OverwriteDriveFileNames(DriveService driveService)
    {
        string fileId = "myId";
        Google.Apis.Drive.v3.Data.File file = driveService.Files.Get(fileId).Execute();
        file.Id = null;
        FilesResource.UpdateRequest request = driveService.Files.Update(file, fileId);
        request.Execute();
    }

您只需重命名您擁有的文件或文件夾。 否則,您將收到消息錯誤 403:

An error occurred: Google.Apis.Requests.RequestError The resource body includes fields which are not directly writable. [403] Errors [ Message[The resource body includes fields which are not directly writable.] Location[ - ] Reason[fieldNotWritable] Domain[global] ]

這里的解決方案:您可以復制或使用所有者用戶的憑據。

希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM