import fs from 'fs'; import FormData from 'form-data'; import fetch from 'node-fetch'; async function testUpload() { const url = 'http://localhost:3456/api/upload/oss'; const testFileName = 'dummy_test.pdf'; // 1. 创建测试用的假PDF文件 fs.writeFileSync(testFileName, '%PDF-1.4\n%Fake PDF content for testing OSS upload.\n'); console.log(`[测试] 已生成临时文件: ${testFileName}`); try { // 2. 构造 FormData 并附加文件 const form = new FormData(); form.append('file', fs.createReadStream(testFileName), testFileName); console.log(`[测试] 正在向 ${url} 发送上传请求...`); // 3. 发送请求 const response = await fetch(url, { method: 'POST', body: form, // 注意:node-fetch 和 form-data 配合时不需要手动设 Content-Type // form-data 会自动带上正确的 boundary header }); console.log(`[测试] HTTP 状态码: ${response.status}`); const resultText = await response.text(); let resultJson; try { resultJson = JSON.parse(resultText); } catch(e) { resultJson = resultText; } console.log('[测试] 响应内容:'); console.log(resultJson); if (response.ok) { console.log('\n✅ 上传测试请求成功!'); } else { console.log('\n❌ 上传测试失败,请检返回信息。'); } } catch (err) { console.error(`\n❌ 请求发生错误:`, err.message); } finally { // 4. 清理临时文件 if (fs.existsSync(testFileName)) { fs.unlinkSync(testFileName); console.log(`[测试] 已清理临时文件: ${testFileName}`); } } } testUpload();