0

我正在尝试使用 gcloud 库(NodeJS)上传到谷歌存储。

我需要启用公共读取属性并将缓存过期时间设置为 5 分钟。

我正在使用这个(简化的)代码:

storage = gcloud.storage({options}
bucker = storage.bucket('name');
fs.createReadStream(srcPath).pipe(bucket.file(targetFile).createWriteStream()).on('error', function(err) 

如何设置适当的 ACL/缓存过期?(我发现了这个但不知道该怎么做: https ://googlecloudplatform.github.io/gcloud-node/#/docs/v0.11.0/storage?method=acl )

谢谢您的帮助

4

3 回答 3

4

您可以按照此处的说明设置预定义的 ACL :

yourBucket.acl.default.add({
  entity: "allUsers",
  role: gcloud.storage.acl.READER_ROLE
}, function (err) {})

关于缓存控制,我不相信您可以将其设置为默认值,但您可以在上传文件时设置它:

var opts = { metadata: { cacheControl: "public, max-age=300" } }
bucket.file(targetFile).createWriteStream(opts)

参考:https ://cloud.google.com/storage/docs/reference-headers#cachecontrol

于 2014-12-04T16:48:12.443 回答
3

Api 改变,使用:

var gcloud = require('gcloud')({
  projectId: 'your_id',
  keyFilename: 'your_path'
});

var storage = gcloud.storage();
var bucket = storage.bucket('bucket_name');

bucket.acl.default.add({
    entity: 'allUsers',
    role: storage.acl.READER_ROLE
}, function(err) {});

要公开整个存储桶,您还可以使用:

bucket.makePublic

来源:https ://github.com/GoogleCloudPlatform/gcloud-node/blob/v0.16.0/lib/storage/bucket.js#L607

或者只是文件:

var bucketFile = bucket.file(filename);

// If you upload a new file, make sure to do this 
// in the callback of upload success otherwise it will throw a 404 error

bucketFile.makePublic(function(err) {});

来源:https ://github.com/GoogleCloudPlatform/gcloud-node/blob/v0.16.0/lib/storage/file.js#L1241 (链接可能会改变,makePublic在源代码中查找。)

或者:

bucketFile.acl.add({
    scope: 'allUsers',
    role: storage.acl.READER_ROLE
}, function(err, aclObject) {});

这是详细版本。

来源:https ://github.com/GoogleCloudPlatform/gcloud-node/blob/v0.16.0/lib/storage/file.js#L116

于 2015-07-25T18:40:46.630 回答
1

斯蒂芬的评论是准确的,但它对我没有用,因为没有设置值。经过一些试验和错误后,使用 cacheControl(没有破折号)让它工作。在撰写本文时,在任何需要采用这种格式的地方都没有记录。我认为其他领域也会有同样的问题。

var opts = { metadata: { "cacheControl": "public, max-age=300" } }
bucket.file(targetFile).createWriteStream(opts)
于 2015-04-15T13:29:32.723 回答