我正在尝试将文件上传到谷歌驱动器,并且我想为此文件设置“共享”权限,但我不知道该怎么做...... 我尝试使用此代码,但文件在没有共享权限的情况下上传。
我的代码是:
// _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();
好吧,我花了最后一个小时来研究这个。如果您查看 Files.insert 文档,它并没有真正说明您应该能够在插入时设置权限。
在底部,如果您测试过尝试一下。按照上面在
Request body
下所做的操作设置权限。
它确实上传了文件。但返回的 Json 给了我们线索。
"shared": false,
现在如果我检查 Google 云端硬盘中的文件
这让我相信 Google Drive API 不支持这一点。上传时“无法”设置权限。上传文件后,您将必须创建一个单独的调用来设置权限。 虽然主体确实支持权限,但它似乎不起作用。我不确定这是一个错误还是不支持的东西。我将查看是否可以找到 Drive 问题跟踪器的位置并将其添加为问题。
与此同时,您将不得不拨打两个电话并吃掉一些配额。
问题 3717:Google Drive api,使用共享权限上传文件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();
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()