Google Drive api,共享权限上传文件

问题描述 投票:0回答:3

我正在尝试将文件上传到谷歌驱动器,并且我想为此文件设置“共享”权限,但我不知道该怎么做...... 我尝试使用此代码,但文件在没有共享权限的情况下上传。

我的代码是:

// _drive - google drive object
Google.Apis.Drive.v2.Data.File item = new Google.Apis.Drive.v2.Data.File();

Permission permission = new Permission();
permission.Role = "reader";
permission.Type = "anyone";
permission.WithLink = true;

item.Permissions = new List<Permission>() { permission };
FilesResource.InsertMediaUpload request = _drive.Files.Insert(item, fileStream, mimeType);
request.Upload();
c# google-api google-drive-api google-api-dotnet-client
3个回答
2
投票

好吧,我花了最后一个小时来研究这个。如果您查看 Files.insert 文档,它并没有真正说明您应该能够在插入时设置权限。

在底部,如果您测试过尝试一下。按照上面在

Request body
下所做的操作设置权限。

enter image description here

它确实上传了文件。但返回的 Json 给了我们线索。

"shared": false,

现在如果我检查 Google 云端硬盘中的文件

enter image description here

这让我相信 Google Drive API 不支持这一点。上传时“无法”设置权限。上传文件后,您将必须创建一个单独的调用来设置权限。 虽然主体确实支持权限,但它似乎不起作用。我不确定这是一个错误还是不支持的东西。我将查看是否可以找到 Drive 问题跟踪器的位置并将其添加为问题。

与此同时,您将不得不拨打两个电话并吃掉一些配额。

问题 3717:Google Drive api,使用共享权限上传文件


1
投票

var NewDirRequest = DService.Files.Insert(GoogleDir); var NewDir = NewDirRequest.Execute(); GoogleFolderID = NewDir.Id; var NewPermissionsRequest = DService.Permissions.Insert(new Permission() { Kind = "drive#permission", Value = emailAddress, Role = "writer", Type = "user" }, GoogleFolderID); DService.Permissions.Insert(new Permission() { Kind = "drive#permission", Value = "mydomain.com", Role = "reader", Type = "domain" }, GoogleFolderID); NewPermissionsRequest.Execute();



0
投票
Python

解决方案的人:

# upload file to drive
uploaded_file = drive_service.files().create(body=file_metadata, media_body=media, fields='id').execute()

# set permission - toAll - for file in drive
drive_service.permissions().create(fileId=uploaded_file['id'], body={'role': 'reader', 'type': 'anyone'}).execute()

© www.soinside.com 2019 - 2024. All rights reserved.