Сохранить изображение на удаленный sftp сервер, отправленный пользователем

Я хочу загрузить файл на удаленный сервер sftp, используя ssh2-sftp-client. Я получаю файл от пользователя в почтовом запросе вместе с пунктом назначения. Я использую 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

1 ответ

sftp.put(localfilepath, remoteFilepath)

для локального пути к файлу:

req.file.path

Вы использовали только "req.file". Если вы тоже хотите получить имя файла, используйте: req.file.originalname

Во-вторых, убедитесь, что "req.query.destination" дает вам путь назначения, куда вы хотите поместить файл.

И, используйте использование регистрации. Это облегчает жизнь.

Другие вопросы по тегам