javascript - 当我使用 AWS.S3.ManagedUpload javascript 在上传文件中添加标签值时,如何防止 & 变成 &?
问题描述
我正在开发一个 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>
“&”字符被转换为“&” 被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>
你知道如何解决这个问题吗?
我将非常感谢您的帮助。
解决方案
推荐阅读
- virtual-memory - 寻找需求分页的下限
- haskell - Haskell中函数参数是如何传递的?
- android - ContextWrapper 的目的是什么(拥有 Context 的代理)?
- c++ - cpp 和 CUDA 中结构的不同大小
- java - 我想知道我们如何将文本添加到 Jcalendar 上显示的日期?
- c++ - 有什么方法可以让进程 P2 访问另一个进程 P1 的局部变量?
- swift - 在 DateFormatter 扩展中包含日期转换器功能
- styled-components - 将样式组件添加到 Codepen
- css - Angular Material 和 Flex 布局 - 并排和多行设置响应图像
- angular - 在有角度的路线中间使用通配符?