0

gcloud ライブラリ (NodeJS) を使用して Google ストレージにアップロードしようとしています。

public-read プロパティを有効にし、キャッシュの有効期限を 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

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#L1241makePublic (リンクは変更される可能性があります。ソース コードで探してください。)

または:

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 に答える