0

我想使用 ssh2-sftp-client 将文件上传到 sftp 远程服务器。我在发布请求中从用户那里获取文件以及目的地。我正在使用 multer 来处理文件。

const Client = require('ssh2-sftp-client');
const sftp = new Client();
const Multer = require("multer")
const multer = Multer({
    storage: Multer.MemoryStorage
});

app.put("/sftp", multer.single('file'), (req, res) => {
    sftpCredentials = req.query;
    sftp.connect({
        host: sftpCredentials.host,
        port: sftpCredentials.port,
        username: sftpCredentials.username,
        password: sftpCredentials.password
    }).then(res =>{
      sftp.put(req.file,req.query.destination);
    })
})

我收到错误:

TypeError: "string" must be a string, Buffer, or ArrayBuffer
4

1 回答 1

0
sftp.put(localfilepath, remoteFilepath)

对于 localfilepath 使用:

req.file.path

您只使用了“req.file”。如果您也想获取文件名,请使用:req.file.originalname

其次,确保“req.query.destination”为您提供了要放置文件的目标路径。

并且,使用日志记录。它使生活更轻松。

于 2018-12-20T05:49:35.990 回答