问题描述
我正在开发一个 javascript 函数来将文件上传到 aws 中的 S3 存储桶。我必须包含一个简短的描述,为此我在 S3 请求中使用标签值,如下所示:
var upload = new AWS.S3.ManagedUpload({
partSize: 6 * 1024 * 1024,queueSize: 5,params: params,tags: [{Key: 'Key',Value: stateTag},{Key: 'desc',Value: convertToEncodeHTML(stateDescription)}]
});
根据 aws 文档 https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html 我必须将特殊字符转换为 html 代码。
为了将特殊字符转换成 html 代码,我使用了这个 javascript 函数:
export function convertToEncodeHTML(string) {
var i = string.length,a = [];
while (i--) {
var iC = string[i].charCodeAt();
if ((iC < 65 || iC > 127 || (iC > 90 && iC < 97)) ) {
a[i] = '&#' + iC + ';';
} else {
a[i] = string[i];
}
}
return a.join('');
}
此功能运行良好,但当我在 Chrome 控制台中检查请求时,我发现该请求因错误请求 400 而被拒绝。
控制台显示此请求已发送:
<Tagging xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<TagSet>
<Tag>
<Key>Key</Key>
<Value>mykeyvalue</Value>
</Tag>
<Tag>
<Key>desc</Key>
<Value>retries en redis&#44; agent backoff&#44; new connector </Value>
</Tag>
</TagSet>
</Tagging>
“&”字符被转换为“& amp;”被 aws 拒绝:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>InvalidTag</Code>
<Message>The TagValue you have provided is invalid</Message>
<TagKey>desc</TagKey>
<TagValue>retries en redis&#44; agent backoff&#44; new connector </TagValue>
</Error>
你知道如何解决这个问题吗?
非常感谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)