使用x-amz-tagging请求标头指定标签

我有一个节点程序file upload到aws s3,我需要指定与请求标头的x-amz标签。 我尝试了一些东西,但不起作用!

function buildRequestHeader() { return { 'Content-Length': fileBuffer.size, 'Content-Type': mimeType, 'x-amz-acl': 'public-read', 'x-amz-tagging' :{"tag1":'abcd',"tag2":'efgh'} } } 

我已经看到了一些文件,

 PUT object-key?tagging HTTP/1.1 Host: examplebucket.s3.amazonaws.com Content-Length: length Content-MD5: pUNXr/BjKK5G2UKExample== x-amz-date: 20160923T001956Z Authorization: authorization string <Tagging> <TagSet> <Tag> <Key>tag1</Key> <Value>val1</Value> </Tag> <Tag> <Key>tag2</Key> <Value>val2</Value> </Tag> </TagSet> </Tagging> 

你能解释一下它是如何工作的吗?

您显示的代码片段来自两种不同的标记方法,第一种是在创build对象时 ,第二种是将标记添加到现有对象 。

x-amz-tagging标题是在创build对象时使用的,但它使用的语法与您的示例中不同。 试试这个:

 function buildRequestHeader() { return { 'Content-Length': fileBuffer.size, 'Content-Type': mimeType, 'x-amz-acl': 'public-read', 'x-amz-tagging': 'tag1=abcd&tag2=efgh' } } 
 const fs= require('fs'); const AWS = require('aws-sdk'); const s3 = new AWS.S3({'accesskey':'accesskeyvalue','region':'your s3 region'}) s3.upload( { Bucket: bucket_name, Key: key, Tagging: 'tag1=abcd&tag2=efgh', Body: fs.createReadStream('./filename.filetype'), }