我们使用带签名的urls从浏览器上传。我还不知道如何在上传时设置cache-control头。
我们使用gcloud-node库来签署urls:
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报头?
要上传的代码正在浏览器中运行:
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'
})发布于 2019-04-10 00:38:18
这是可能的,但是文档很糟糕。首先,你需要在你上传的存储桶上设置CORS:
gsutil cors set cors.json gs://bucket-name其中cors.json包含类似以下内容:
[{
"maxAgeSeconds": 3600,
"method": ["GET", "PUT", "POST"],
"origin": [
"http://localhost:3000"
],
"responseHeader": ["Content-Type", "Cache-Control"]
}]"responseHeader“字段中需要列出"Cache-Control”。然后像往常一样上传,但要设置Cache-Control头。使用fetch,它将是:
fetch(uploadUrl, {
method: 'PUT',
body: blob,
headers: {
'Content-Type': blob.type,
'Cache-Control': 'public, max-age=31536000',
},
});发布于 2015-10-22 13:47:57
你得到的代码片段是一个签名的url。当您将对象上传(插入)到GCS中时,您应该能够通过API进行设置:
https://cloud.google.com/storage/docs/json_api/v1/objects/insert
https://stackoverflow.com/questions/33223966
复制相似问题