如何防止 & 变成 &当我使用 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&amp;#44; agent backoff&amp;#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&amp;#44; agent backoff&amp;#44; new connector  </TagValue>
</Error>

你知道如何解决这个问题吗?

非常感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)