【问题标题】:save an image to sftp remote server sent by user将图像保存到用户发送的 sftp 远程服务器
【发布时间】:2019-05-20 14:51:48
【问题描述】:

我想使用 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

【问题讨论】:

  • 请描述您面临的问题。如果您遇到错误,请将确切的错误文本粘贴到您的帖子中
  • 我遇到了这个错误 TypeError: "string" must be a string, Buffer, or ArrayBuffer

标签: javascript node.js ssh2


【解决方案1】:
sftp.put(localfilepath, remoteFilepath)

用于本地文件路径:

req.file.path

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

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

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

【讨论】:

  • req.file 是一个包含 = { buffer:Buffer(85967) [137, 80, 78, …] encoding:"7bit" fieldname:"file" mimetype:"image/png" originalname:"sample.png" size:85967 } 的对象
  • 好吧,我在我使用 multer 的代码中给出了答案。而且,如果你看到这个模块的官方文档(npmjs.com/package/multer),请参阅 API 部分。您可以看到“路径”在那里表示本地文件路径。
猜你喜欢
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多