UNPKG

resume-parser-mcp

Version:

To install dependencies:

49 lines (44 loc) 1.4 kB
import axios from 'axios'; import fs from 'fs'; import path from 'path'; import { tmpdir } from 'os'; import { v4 as uuidv4 } from 'uuid'; import { useLogger } from '../utils/logger'; export async function downloadFile(url: string) { const logger = useLogger(); try { const response = await axios({ url, method: 'GET', responseType: 'stream', }); let fileExtension = path.extname(new URL(url).pathname).toLowerCase(); if (!fileExtension) { const contentType = response.headers['content-type']; if (contentType) { fileExtension = `.${contentType.toLowerCase().split('/')[1]}`; } } logger.info('fileExtension', fileExtension); const tempFilePath = path.join(tmpdir(), `${uuidv4()}${fileExtension}`); const writer = fs.createWriteStream(tempFilePath); await new Promise((resolve, reject) => { response.data.pipe(writer); let error: Error | null = null; writer.on('error', (err) => { error = err; writer.close(); reject(err); }); writer.on('close', () => { if (!error) { resolve(tempFilePath); } }); }); return tempFilePath; } catch (error: any) { logger.error('文件下载失败:', error?.message); throw new Error(`无法下载文件: ${error?.message}`); } }