首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Cloud Storage set缓存控制,带签名的urls上传

Google Cloud Storage set缓存控制,带签名的urls上传
EN

Stack Overflow用户
提问于 2015-10-20 05:08:46
回答 2查看 1.2K关注 0票数 2

我们使用带签名的urls从浏览器上传。我还不知道如何在上传时设置cache-control头。

我们使用gcloud-node库来签署urls:

代码语言:javascript
复制
var bucket = gcs.bucket('mybucket');
var file = bucket.file('image.jpg');

var expireDate = new Date
expireDate.setDate(expireDate.getDate() + 1);

file.getSignedUrl({
  action: 'write',
  expires: expireDate,
  contentType: 'image/jpeg'
}, function (err, signedUrl) {
  if (err) {
    console.error('SignedUrl error', err);
  } else {
    console.log(signedUrl);
  }
});

上传文件到GCS时如何设置Cache-Control报头?

要上传的代码正在浏览器中运行:

代码语言:javascript
复制
var signedUrl = ...; // get from nodejs server
var fileList = this.files;

var file = fileList[0];

jQuery.ajax({
  url: signedUrl,
  type: 'PUT',
  data: file,
  processData: false,
  contentType: 'image/jpeg'
})
EN

回答 2

Stack Overflow用户

发布于 2019-04-10 00:38:18

这是可能的,但是文档很糟糕。首先,你需要在你上传的存储桶上设置CORS:

代码语言:javascript
复制
gsutil cors set cors.json gs://bucket-name

其中cors.json包含类似以下内容:

代码语言:javascript
复制
[{
    "maxAgeSeconds": 3600,
    "method": ["GET", "PUT", "POST"],
    "origin": [
        "http://localhost:3000"
    ],
    "responseHeader": ["Content-Type", "Cache-Control"]
}]

"responseHeader“字段中需要列出"Cache-Control”。然后像往常一样上传,但要设置Cache-Control头。使用fetch,它将是:

代码语言:javascript
复制
fetch(uploadUrl, {
    method: 'PUT',
    body: blob,
    headers: {
        'Content-Type': blob.type,
        'Cache-Control': 'public, max-age=31536000',
    },
});
票数 1
EN

Stack Overflow用户

发布于 2015-10-22 13:47:57

你得到的代码片段是一个签名的url。当您将对象上传(插入)到GCS中时,您应该能够通过API进行设置:

https://cloud.google.com/storage/docs/json_api/v1/objects/insert

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33223966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档