我有一个节点应用程序,可以使用它们的SDK将文件上传到AWS S3存储。
我有一个名为:File-type (14).csv的文件
我上传如下:
const AWS = require(`aws-sdk`)
const params = {
Bucket: `MY_BUCKET`,
Key: `path/File-type (4).csv`,
Body: fileContent
}
// Upload
new AWS.S3({/* config */})
.upload(params, (err, response) => {
const location = response.Location
})然后使用location常量将其存储在数据库中。但是这个链接不起作用,当我去AWS控制面板检查时,它会给它一个不同的链接。
From location: https://s3.amazonaws.com/bucket/path/File-type%20%281%29.csv
From AWS: https://s3.amazonaws.com/bucket/path/File-type%2520%25281%2529.csv请注意File-type后面的名称的不同
我已经在字符串上尝试过encodeURI (预上传,在params.Key上),但这不会删除(),因此仍然会产生错误。我可以做一个正则表达式来删除所有非alpha-数字值,但这感觉很麻烦,或者这是唯一的解决方案,还是我遗漏了什么?
发布于 2021-10-22 16:51:14
AWS有需要遵守的字符规则。他们不会告诉你或解决问题,并提供错误的链接。
在上传之前,您需要清理路径以避免“不接受”字符,这些字符可以在下面找到:
https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
所以,在上传之前,一定要清理好你的路径。
https://stackoverflow.com/questions/67879314
复制相似问题