но это блокирует запрос, пока загрузка не пройдет. Как можно просто запустить и поставить на фоне загрузку?
так же как и любой другой запрос, не? промис
const https = require('https'); const fs = require('fs'); const s3ObjectUrl = someUrl; const localFilePath = `./output/${s3ObjectUrl.split('/').at(-1)}`; export const getFile = (): Promise<string> => { return new Promise((resolve, reject) => { const fileStream = fs.createWriteStream(localFilePath); const request = https.get(`https://${s3ObjectUrl}`, (response) => { if (response.statusCode === 200) { response.pipe(fileStream); fileStream.on('close', () => { console.log('File downloaded successfully'); resolve(localFilePath); }); } else { console.error( 'Error downloading file. HTTP Status Code: ' + response.statusCode, ); reject(new Error('Error with downloading!')); } }); request.on('error', (err) => { console.error('Error downloading file:', err); reject(new Error('Error with downloading!')); }); }); }; Что нужно доработать?
что значит "блокирует запрос"?
Ну мне от него нужна только ссылка, загрузка - урл, выгрузка - путь. Я их сразу получаю, но потом чисто жду 20 секунд, пока оно загрузит полностью
Обсуждают сегодня