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

2023-12-02

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

“指定的密钥不存在。” “NoSuchKey:指定的键不存在。 在 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 密钥必须进行 url 编码,因为它们需要以 URL 形式访问。 有一些软件包可以帮助您进行 url 格式化,例如发言网址或者你可以尝试自己写一些,也许只是简单地替换空格(\s) 带有破折号 (_ or -)如果你想保持友好。

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

希望能帮助到你!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Node 将文件从一个 AWS S3 存储桶复制到另一个存储桶 的相关文章

随机推荐

  • 如何从 C# 应用程序内部检查新 Microsoft Edge Chromium 的版本?

    有谁知道如何从 C 应用程序内部检查 PC 上安装的 Edge Chromium 版本 我在发布之前进行了搜索 在该线程的评论中 有人提供了一种从旧版 Microsoft Edge 获取版本号的方法 如何检测是否安装了 Microsoft
  • 访问动画的presentationLayer以检测碰撞

    我有两个对象 一个通过动画移动 另一个在我用手指拖动时移动 我希望能够使用 CGIntersectsRect 检测两者何时 碰撞 然而 我听说为了用动画来做到这一点 我需要访问表示层以从那里获取值 然而 我不知道该怎么做 这是我的动画代码
  • 如何获取YouTube视频的比特率信息?

    我正在使用 YouTube 视频进行测试 我想知道如何获取播放视频的比特率信息 我使用了两种方法来了解有关比特率的信息 但没有得到任何信息 1 Right click on a video and choose Stats for nerd
  • 多对多关系?

    伙计们 我正在尝试为我的公司制作一个简单的票证生成系统 作为一个帮助 现在 我有一张名为tblTicket另一个表称为tblEngineer在我的 MSSQL 数据库中 我的应用程序采用 C Windows 表单 因此在新的票证生成表单上
  • WindowManagerBadTokenException 无法添加窗口

    我有一个错误如下 TODO tryAgain private void tryAgain new AlertDialog Builder this setTitle Game Over setMessage Times Up setPosi
  • jQuery Mobile:data-rel =“back”+ data-transition 不起作用?

    我创建了一个 jsfiddle 它可以使用导航栏启用选项卡 而无需更改 url 哈希 http jsfiddle net ryanhaney eLENj 1 如果我单击主页上的 第 1 页 链接 然后单击 后退 按钮 我将获得预期的反向幻灯
  • 用向量移动字符

    我正在自学 pygame 并正在考虑让我的角色能够旋转 然后朝他们面对的方向移动 我可以进行旋转 但无法让角色沿着图像面向的方向移动 代码在 Trinket 上HERE class Bob pygame sprite Sprite def
  • 如何使用函数参数作为变量的一部分?

    这有效 chrome storage local get sizePref function items Get size preferences from storage var sizePref2 items sizePref tops
  • Laravel Eloquent 无法使用复合主键保存模型

    当定义复合主键然后在实例化模型上调用 save 时 会引发异常 ErrorException E UNKNOWN PDO lastInsertId expects parameter 1 to be string array given 错
  • 使用 Java Servlet API 发送 100 继续

    是否可以发送 100 Continue HTTP 状态代码 然后在使用 Java Servlet API HttpServletResponse 处理整个请求后发送一些其他状态代码 我找不到任何明确的 否 答案 尽管 API 似乎不支持它
  • Python 如何打印列表的列表

    我想用下面的代码打印 python 3 x 中的列表列表 但它给出了错误 lol 1 2 3 4 5 6 five six for elem in lol print join elem this is the error I am get
  • cabal 沙箱 v. 全局包数据库

    在 cabal 沙箱内安装时 cabal 仍将使用全局包数据库中的包 特别是来自 Haskell 平台的包 这可能会导致安装冲突 是否可以配置 cabal 来忽略全局包 db 我看到相应的功能已经实现了ghc本身 通过 no global
  • 使用 3D 变换翻转在 IE11 中不起作用(我的不同)

    我研究了 CSS3 3d 变换 最后得到了一些 CSS3 3d 翻转动作的代码 所以它在所有浏览器中都工作正常 除了互联网浏览器 IE11 所以我在 stackoverflow com 上调查了这个问题 我得到了一些解决方案 但不幸的是这些
  • Span 的“ScrollWidth”属性在 Chrome 上不起作用吗?

    我有一个跨度 里面有一些文本 document getElementById span1 scrollWidth 在 Firefox 上返回 100 作为滚动宽度 但 Chrome 仅返回 0 Chrome 不支持这个 scrollWidt
  • 解析sql中的JSON字符串

    我的表中有一列 JSON 字符串 我使用的是 SQL Server 2008 关于如何解析 JSON 字符串并提取特定值的任何想法 这是我的 JSON 字符串 id 1234 name Lasagne al frono descriptio
  • Rails 3.1 link_to 未正确显示确认或销毁

    我一直在研读 Railstutorial org 上的章节并使用 Rails 3 1 3 因为我很疯狂和 或想要挑战 我设法轻松地解决了大多数版本问题 但这个问题困扰了我一段时间 在10 4 2中 Michael Hartl使用以下代码删除
  • 如何像口语一样将数字转换为文本?

    如果值以百万为单位 那么字符串应该是 miliion thousand hundred 我使用了这段代码 但它显示的是百万值 如何解决这个问题 convert to words NSString wordNumber NSNumber nu
  • 如何在未聚焦的 WinForms TextBox/RichTextBox 中显示光标?

    我需要在 WinForms 应用程序的 RichTextBox 控件中显示光标 即使它没有焦点 我怎样才能做到这一点 我只找到了WPF的方法 如何在未聚焦时保持 WPF 文本框选择 您可以使用 WinAPI DllImport user32
  • 有没有什么方法可以获取没有查询字符串的 URL?

    我有一个像这样的网址http localhost dms mduserSecurity UIL index php menu true submenu true pcode 1235 我想获取不带查询字符串的 URL http localh
  • 使用 Node 将文件从一个 AWS S3 存储桶复制到另一个存储桶

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