将文件上传到谷歌云存储时设置公共读取权限

本文关键字:设置 权限 读取 存储 文件 谷歌 | 更新日期: 2023-09-27 17:58:47

到处搜索似乎都找不到指定ACL值的方法,这样任何有链接的人都可以公开读取我刚刚上传的文件。

这是创建包含文件信息的Data.Object的代码,有一个Acl属性,但将Entity设置为"allUsers",角色为"READER"是不起作用的。

Dim fileObj = New Google.Apis.Storage.v1.Data.Object() With { _
                 .Name = "/myfolder/2016/07/27/selfie1.jpg", _
                 .Updated = DateTime.Now, _
                 .Size = CULng(fileStream.Length) _
            }

上传后,我可以从MediaLink属性获取链接,我的问题是如何指定任何人都可以读取我即将上传的文件的权限?

将文件上传到谷歌云存储时设置公共读取权限

似乎我没有正确测试链接,以下是发现这个问题并想知道我在做什么的人的代码。这是测试代码,而不是生产代码。

Dim fileMimeType = "image/jpeg"
Dim fileStream = New FileStream("c:'selfie1.jpg", FileMode.Open, FileAccess.Read)
Dim acc As New ObjectAccessControl()
acc.Entity = "allUsers"
acc.Role = "READER"
Dim Accs As New List(Of ObjectAccessControl)
Accs.Add(acc)
Dim fileObj = New Google.Apis.Storage.v1.Data.Object() With { _
                 .Name = "/myfolder/2016/07/27/selfie1.jpg", _
                 .Updated = DateTime.Now, _
                 .Acl = Accs, _
                 .Size = CULng(fileStream.Length) _
            }
Dim mediaUpload = New ObjectsResource.InsertMediaUpload(service, fileObj, GCSBucketName, fileStream, fileMimeType)
mediaUpload.Upload()

ObjectAccessControl对象的两个值是使其工作的关键。"service"变量是一个StorageService对象,您使用ServiceAccountCredential从.p12或.json文件创建该对象,该文件是从云api控制台获得的。