Google cloud storage 通过GCS signedUploadURL上载时,如何向文件添加元数据?
我正在使用一个签名URL(通过GCS PHP API生成)将文件上传到bucket。我发布签名的URL,它返回一个位置头,反过来,我做一个PUT来完成实际的上传。这个基本的上传过程运行良好。现在,我需要在文件中传递一些元数据(上传者名称、上传者电子邮件、注释等) 根据文档,我向PUT请求添加了头,其形式为Google cloud storage 通过GCS signedUploadURL上载时,如何向文件添加元数据?,google-cloud-storage,Google Cloud Storage,我正在使用一个签名URL(通过GCS PHP API生成)将文件上传到bucket。我发布签名的URL,它返回一个位置头,反过来,我做一个PUT来完成实际的上传。这个基本的上传过程运行良好。现在,我需要在文件中传递一些元数据(上传者名称、上传者电子邮件、注释等) 根据文档,我向PUT请求添加了头,其形式为'x-goog-meta-:'value',它们应该成为元数据。但是,如果我不将它们添加到已签名的URL和POST请求中,我会得到一个虚假的CORS错误(请求的资源上不存在“Access Con
'x-goog-meta-:'value'
,它们应该成为元数据。但是,如果我不将它们添加到已签名的URL和POST请求中,我会得到一个虚假的CORS错误(请求的资源上不存在“Access Control Allow Origin”头)
上传成功了,我可以在Chrome的网络选项卡中看到,这些头被添加到POST和PUT请求中,但是当文件到达存储桶时,没有元数据
这是我的代码,有点简化:
var metadata, headers;
metadata =
{
'sender-name': "bob dobbs",
'sender-email': "bobdobbs@zynyz.com",
};
headers = { 'x-goog-resumable': 'start' };
for (var i in metadata)
{
headers['x-goog-meta-' + i] = metadata[i];
}
// Start the upload
$.ajax(
{
type: POST,
url: signed_upload_url,
success: on_init_success,
contentType: file.type,
headers: headers,
processData: false
});
// Do the actual upload
var on_init_success = function(result, status, xhr)
{
var loc;
loc = xhr.getResponseHeader('Location');
if (loc)
{
$.ajax(
{
type: 'PUT',
url: loc,
data: file,
contentType: file.type,
headers: headers,
processData: false
});
}
}
您好,您可以使用这个命令“gsutil stat gs://[BUCKET\u NAME]/[object\u NAME]”[1][1]-@andie:这与控制台中的相同,不显示任何元数据。您好,您的代码看起来很好,我认为,如果您向GCP支持部门提交一个案例,以检查您的bucket没有收到元数据的原因,您所面临的问题可能会得到更好的处理@安迪:很遗憾,我们没有支持计划,所以我认为这是我唯一的选择。不过,谢谢你检查代码。至少现在我觉得我没有做什么太愚蠢的事。