axios-file-export
Version:
一个基于axios的文件导出工具,支持自动检测文件类型、时间戳命名和自定义文件名,兼容所有文件格式
185 lines (155 loc) • 5.72 kB
JavaScript
/**
* Node.js环境使用示例
* 运行方式: node example/demo.js
*/
import { exportFile } from '../src/index.js';
console.log('🚀 axios-file-export Node.js 示例\n');
/**
* 示例1: 使用时间戳命名下载PDF
*/
async function example1() {
console.log('📄 示例1: 下载PDF文件(时间戳命名)');
console.log('-------------------------------------------');
const result = await exportFile('https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf');
if (result.success) {
console.log('✅ 成功:', result.message);
console.log(' 文件名:', result.filename);
console.log(' 保存路径:', result.filepath);
} else {
console.log('❌ 失败:', result.message);
}
console.log('');
}
/**
* 示例2: 自定义文件名
*/
async function example2() {
console.log('📝 示例2: 自定义文件名下载');
console.log('-------------------------------------------');
const result = await exportFile('https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf', {
filename: 'custom-document'
});
if (result.success) {
console.log('✅ 成功:', result.message);
console.log(' 文件名:', result.filename);
console.log(' 保存路径:', result.filepath);
} else {
console.log('❌ 失败:', result.message);
}
console.log('');
}
/**
* 示例3: 带参数的GET请求
*/
async function example3() {
console.log('📊 示例3: 带参数的GET请求');
console.log('-------------------------------------------');
const result = await exportFile('https://jsonplaceholder.typicode.com/posts', {
params: {
_limit: 10
},
filename: 'api-response',
useTimestamp: true,
timestampFormat: 'YYYY-MM-DD_HH-mm-ss'
});
if (result.success) {
console.log('✅ 成功:', result.message);
console.log(' 文件名:', result.filename);
console.log(' 保存路径:', result.filepath);
} else {
console.log('❌ 失败:', result.message);
}
console.log('');
}
/**
* 示例4: POST请求下载
*/
async function example4() {
console.log('📮 示例4: POST请求下载');
console.log('-------------------------------------------');
const result = await exportFile('https://jsonplaceholder.typicode.com/posts', {
method: 'POST',
data: {
title: 'Test Post',
body: 'This is a test',
userId: 1
},
filename: 'post-response'
});
if (result.success) {
console.log('✅ 成功:', result.message);
console.log(' 文件名:', result.filename);
console.log(' 保存路径:', result.filepath);
} else {
console.log('❌ 失败:', result.message);
}
console.log('');
}
/**
* 示例5: 下载图片
*/
async function example5() {
console.log('🖼️ 示例5: 下载图片');
console.log('-------------------------------------------');
const result = await exportFile('https://picsum.photos/800/600', {
filename: 'random-image',
timestampFormat: 'YYYYMMDD'
});
if (result.success) {
console.log('✅ 成功:', result.message);
console.log(' 文件名:', result.filename);
console.log(' 保存路径:', result.filepath);
} else {
console.log('❌ 失败:', result.message);
}
console.log('');
}
/**
* 示例6: 带自定义请求头
*/
async function example6() {
console.log('🔐 示例6: 带认证头的请求');
console.log('-------------------------------------------');
const result = await exportFile('https://jsonplaceholder.typicode.com/users/1', {
headers: {
'Authorization': 'Bearer demo-token-123',
'X-Custom-Header': 'custom-value'
},
filename: 'user-data'
});
if (result.success) {
console.log('✅ 成功:', result.message);
console.log(' 文件名:', result.filename);
console.log(' 保存路径:', result.filepath);
} else {
console.log('❌ 失败:', result.message);
}
console.log('');
}
/**
* 运行所有示例
*/
async function runAllExamples() {
console.log('════════════════════════════════════════════\n');
try {
await example1();
await new Promise(resolve => setTimeout(resolve, 500)); // 延迟避免请求过快
await example2();
await new Promise(resolve => setTimeout(resolve, 500));
await example3();
await new Promise(resolve => setTimeout(resolve, 500));
await example4();
await new Promise(resolve => setTimeout(resolve, 500));
await example5();
await new Promise(resolve => setTimeout(resolve, 500));
await example6();
console.log('════════════════════════════════════════════');
console.log('✨ 所有示例运行完成!');
console.log('📁 文件保存在: downloads/ 目录');
console.log('════════════════════════════════════════════');
} catch (error) {
console.error('❌ 运行示例时出错:', error);
}
}
// 运行示例
runAllExamples();