Я пишу сервер Node Express, который подключается через sftp к хранилищу файлов.Я использую пакет ssh2-sftp-client .
Для извлечения файлов он имеет функцию get
со следующей подписью:
get(srcPath, dst, options)
Аргумент dst
должен быть либо строкой, либо a writable stream, which will be used as the destination for a stream pipe
.
Я бы хотел избежать создания файлового объекта на моем сервере и вместо этого перенести файл на мой клиент для экономии памяти, как описано в этой статье .Я попытался выполнить это с помощью следующего кода:
const get = (writeStream) => {
sftp.connect(config).then(() => {
return sftp.get('path/to/file.zip', writeStream)
});
};
app.get('/thefile', (req, res) => {
get(res); // pass the res writable stream to sftp.get
});
Однако это приводит к сбою сервера моего узла из-за необработанного отклонения обещания.Возможно ли то, что я пытаюсь сделать?Должен ли я сохранить файл на моем сервере перед отправкой клиенту?Я проверил документацию / примеры для рассматриваемого пакета sftp, но не могу найти пример того, что я ищу.