NODE AWS S3文件位置与某些字符的响应不同



我有一个节点应用程序,可以使用他们的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上(,但这并没有删除(),因此仍然会产生错误。我可以用正则表达式删除所有非字母数字值,但这感觉很糟糕,或者这是唯一的解决方案,或者我遗漏了什么?

AWS SDK需要遵守字符规则。它们不会告诉你或解决问题,也不会提供错误的链接。

在你上传之前,你需要清理你的路径,以避免";不被接受";字符,可以在这里找到:

https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html

所以在上传之前一定要清理好你的路径。

最新更新