AWS SDK复制S3文件时目标前缀显示[Object Object]问题求助
S3文件复制到
main-dir/[object object]目录的问题修复 问题根源
你遇到的核心问题是调用copyS3Folder时传入的data是对象类型,当你在模板字符串main-dir/${data}中直接拼接对象时,JavaScript会将对象强制转换为字符串[object Object],最终导致文件被复制到错误的路径。
解决方案
1. 提取data中的具体字符串字段
先确认data的结构,提取其中用于标识目标目录的字符串字段来拼接前缀:
socket.on("createStartUp", async (data) => { console.log(data) // 示例:假设data包含folderName字段,替换为你实际的字段名 await copyS3Folder(`group-source`, `main-dir/${data.folderName}`) console.log("success!") })
2. 先调试确认data的类型与结构
如果不确定data的具体结构,在调用前添加日志排查:
socket.on("createStartUp", async (data) => { console.log(typeof data, data); // 打印data的类型和完整结构 // 根据日志结果提取对应字段 await copyS3Folder(`group-source`, `main-dir/${data.targetField}`) console.log("success!") })
如果data是JSON字符串格式,需要先解析:
socket.on("createStartUp", async (data) => { const parsedData = JSON.parse(data); await copyS3Folder(`group-source`, `main-dir/${parsedData.targetField}`) console.log("success!") })
额外优化建议
为了避免前缀替换时的意外匹配(比如group-source和group-source-files的混淆),建议给源前缀和目标前缀加上末尾的斜杠:
// 源前缀和目标前缀都添加末尾斜杠 await copyS3Folder(`group-source/`, `main-dir/${data.folderName}/`)
内容的提问来源于stack exchange,提问作者Divyansh Pathak
相关产品推荐
相关产品推荐

