Files
gitlab-instance-0a899031_na…/network.js
root 1dd23689e3 s
2025-12-16 23:24:11 +08:00

20 lines
895 B
JavaScript

const https = require('https');
const fs = require('fs');
function downloadFile(url, dest) {
return new Promise((resolve, reject) => {
const options = { headers: { 'User-Agent': 'Mozilla/5.0' } };
const request = https.get(url, options, (response) => {
if (response.statusCode === 301 || response.statusCode === 302) {
return downloadFile(response.headers.location, dest).then(resolve).catch(reject);
}
if (response.statusCode !== 200) { return reject(new Error(`Failed: ${response.statusCode}`)); }
const file = fs.createWriteStream(dest);
response.pipe(file);
file.on('finish', () => { file.close(() => resolve()); });
});
request.on('error', (err) => { if (fs.existsSync(dest)) fs.unlink(dest, () => {}); reject(err); });
});
}
module.exports = { downloadFile };