Я пытаюсь загрузить несколько файлов на свой SFTP-сервер, но мне не повезло. Я видел такой пример:
как отправить (положить) несколько файлов с помощью nodejs ssh2-sftp-client?
Но это не кажется очень эффективным методом, поскольку он открывает и закрывает соединение с сервером при каждой загрузке файла. Просто чтобы дать некоторый контекст, мое приложение потенциально могло бы попытаться загрузить многие тысячи файлов. Я отправляю массив имен файлов от клиента к серверу и вызываю SFTP.get, чтобы получить файл из удаленного места, и SFTP.put этот файловый поток обратно в другое удаленное место. Это делается с помощью модуля npm ssh2-sftp-client.
Я попытался загрузить несколько файлов, используя несколько разных методов, но безуспешно.
В первую очередь:
for (var i=0; i<10; i++) {
sftp.get('filepath/testFile.csv').then((stream) => {
sftp.put(stream, 'newfilepath/testFile' + i + '.csv');
})
}
Это была просто попытка загрузить один и тот же файл по 10 раз каждый раз под другим именем. Однако когда я смотрю на свой сервер:
Был загружен только последний файл - при просмотре журналов он фактически пытался загрузить testFile10.csv 10 раз, а не testFile1.csv, testFile2.csv и т. Д.
Во-вторых:
var files = ['testFile.csv', 'testFile2.csv']
for (var i=0; i<2; i++) {
sftp.get('filepath/' + files[i]).then((stream) => {
sftp.put(stream, 'newfilepath/testFile' + i + '.csv');
})
}
Это была попытка просто загрузить 2 файла. Однако, как и в предыдущем примере, был загружен только последний файл - в данном случае testFile2.csv.
Любые предложения, как я могу заставить это работать? Можно ли вообще ЗАГРУЗИТЬ несколько файлов в цикл for? Это не похоже на то, что должно быть технически сложным, я просто не понимаю, почему он даже не пытается зацикливаться от 0 до 10, он просто пытается поставить testFile10 10 раз.
Это довольно серьезное техническое препятствие, которое мне нужно преодолеть в срок, поэтому я буду очень признателен за любую помощь, которую вы можете оказать.
Спасибо заранее,
G