我正在使用
根据 Google 的说明(点击此处),如果我想要包含自定义标头,需要以 "x-goog-meta-mycustomheader" 的形式添加。
当我将上述元数据对象更改为以下内容时:
googleapis.auth.JWT
进行身份验证和 request
多部分上传,将 JSON 文件上传到 Google 存储中,它的工作效果如预期。
这是代码:
var data = JSON.stringify(json);
var metadata = {
name: "name"
contentLanguage: "en",
acl: [...]
};
authClient.authorize(function(err, tokens) {
if (err) {...}
request.post({
'url': 'https://....',
'qs': {
'uploadType': 'multipart'
},
'headers' : {
'Authorization': 'Bearer ' + tokens.access_token
},
'multipart': [{
'Content-Type': 'application/json; charset=UTF-8',
'body': JSON.stringify(metadata)
},{
'Content-Type': 'application/json',
'body': data
}]
}, done);
});
});
}
根据 Google 的说明(点击此处),如果我想要包含自定义标头,需要以 "x-goog-meta-mycustomheader" 的形式添加。
当我将上述元数据对象更改为以下内容时:
var metadata = {
name: "name"
contentLanguage: "en",
"x-goog-meta-something": "completely different",
acl: [...]
};
对此没有任何影响。
当我上传对象到Google Storage时,如何添加自定义标题?
编辑:
请注意,这是一个多部分上传,它使用第一部分正文作为第二部分(实际部分)的元数据,请参见此处了解详情。
特别是:
如果您有要随数据一起发送的元数据,则可以进行单个多部分/相关请求。与简单媒体请求一样,如果您发送的数据足够小以便在连接失败时再次完全上传,则这是一个不错的选择。
元数据部分:必须首先出现,Content-Type必须与接受的元数据格式之一匹配。
媒体部分:必须第二次出现,Content-Type必须与该方法接受的媒体MIME类型之一匹配。
这就是为什么我将元数据用作标题部分的原因,我还尝试了所有其他组合,例如将"x-goog-meta-something"放在所有其他位置。
metadata: {"something": "完全不同"}
。 - ekeren