gpt4 book ai didi

node.js - 使用 Node 将文件从一个 AWS S3 存储桶复制到另一个存储桶

转载 作者:搜寻专家 更新时间:2023-10-31 23:57:26 24 4
gpt4 key购买 nike

我正在尝试使用 Node.js 将文件从 AWS S3 存储桶复制到另一个存储桶。问题是如果文件名没有空格,例如:“abc.csv”,它工作正常。但是,如果我要复制到的文件的文件名中有空格,例如:“abc xyz.csv”。它抛出以下错误。

“指定的 key 不存在。”“NoSuchKey:指定的 key 不存在。 在 Request.extractError (d:\Projects\Other\testproject\s3filetoarchieve\node_modules\aws-sdk\lib\services\s3.js:577:35)

下面是提供的代码。

return Promise.each( files, file => {
var params = {
Bucket: process.env.CR_S3_BUCKET_NAME,
CopySource: `/${ process.env.CR_S3_BUCKET_NAME }/${ prefix }${ file.name}`,
Key: `${ archieveFolder }${ file.name }`
};
console.log(params);
return new Promise(( resolve, reject) => {
s3bucket.copyObject(params, function(err, data) {
if (err){
console.log(err, err.stack);
debugger
} else {
console.log(data);
debugger
}
});
});
}).then( result => {
debugger
});

早期的帮助将是非常可观的。谢谢。

最佳答案

我认为问题正是文件名中的那个空格。

S3 key 必须是 url 编码的,因为它们需要以 URL 形式访问。有一些软件包可以帮助您进行 url 格式化,例如 speakingUrl或者你可以尝试自己写一些,如果你想保持友好,也许只是简单地用破折号(_ 或 -)替换空格(\s)。

如果你不介意,你可以简单地encodeURIComponent(file.name)

希望对您有所帮助!

关于node.js - 使用 Node 将文件从一个 AWS S3 存储桶复制到另一个存储桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50831566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com