将文件上传到Google云端存储时设置公开读取权限

时间:2016-07-27 12:40:47

标签: c# vb.net google-cloud-storage

在任何地方搜索似乎无法找到指定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属性获取链接,我的问题是如何指定我将要上传的文件可以被任何人阅读的权限?

1 个答案:

答案 0 :(得分:0)

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

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'变量是您使用从Apache api控制台获得的.p12或.json文件中的ServiceAccountCredential创建的StorageService对象。