SFTP 上传在 Node.js 的 lambda 函数中不起作用

发布于 2025-01-18 01:49:52 字数 1299 浏览 2 评论 0原文

我正在尝试使用 Node.js 中的 ssh2-sftp-client 将单个或多个文件从本地文件夹上传到 sftp 文件夹。

我正在尝试使用 Promise.all 上传文件。该代码在本地测试时工作正常,但当我将代码上传到 AWS lambda 时。消息显示文件已成功上传,但当我检查 FTP 文件夹时,看不到任何已上传的文件。这是我正在使用的代码。

exports.handler= async (event)=>{    
 var Files = await Promise.all(FilesLIst.map(async (file) =>UploadToFtp(_customer,dir,file)));
}
function UploadToFtp(_customer,dir,file){
       // let data = fs.createReadStream(dir+'/'+file);
        let remote = _customer.FTPPath + '/' + file;
        let client = new Client;
        const config = {
            host: _customer.FTPHost,
            port:_customer.FTPPort,
            username:_customer.FTPUserName,
            password: _customer.FTPPassword,
          };
        return new Promise((res,rej)=>{
                client.connect(config)
                .then(() => {
                    let data=fs.readFileSync(dir+'/'+file);
                    return client.put(data, remote);
                })
                .then(() => {
                    return client.end();                   
                })//.then(()=>{ res()})
                .catch(err => {
                    console.error(err.message);
                    //rej()
                });
        })
}

接下来我可以尝试什么?

I am trying to upload single or multiple files from local folder to sftp folder using ssh2-sftp-client in Node.js.

I am trying to upload files using Promise.all. The code works fine when tested locally, but when I upload the code to the AWS lambda. Messages show files uploaded successfully but when I check the FTP folder I can't see any files uploaded. Here is the code I am using.

exports.handler= async (event)=>{    
 var Files = await Promise.all(FilesLIst.map(async (file) =>UploadToFtp(_customer,dir,file)));
}
function UploadToFtp(_customer,dir,file){
       // let data = fs.createReadStream(dir+'/'+file);
        let remote = _customer.FTPPath + '/' + file;
        let client = new Client;
        const config = {
            host: _customer.FTPHost,
            port:_customer.FTPPort,
            username:_customer.FTPUserName,
            password: _customer.FTPPassword,
          };
        return new Promise((res,rej)=>{
                client.connect(config)
                .then(() => {
                    let data=fs.readFileSync(dir+'/'+file);
                    return client.put(data, remote);
                })
                .then(() => {
                    return client.end();                   
                })//.then(()=>{ res()})
                .catch(err => {
                    console.error(err.message);
                    //rej()
                });
        })
}

What can I try next?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文