使用 formdata 对象构建表单数据,并通过 fetch api 发起 post 请求即可上传文件。只需将文件实例 append 到 formdata 中,调用 fetch 时不手动设置 content-type 头,浏览器会自动生成包含 boundary 的正确 multipart/form-data 格式。

如何获取并验证上传的文件元数据?
服务器端通过解析 multipart 请求体提取文件信息。在 Node.js 环境中,使用 multer 中间件可以方便地处理上传的文件,并将文件元数据挂载到 req.file 上。开发者可以通过检查 req.file 是否存在来验证上传是否成功,并获取文件名、大小和类型等元数据。

const express = require('express');
const multer = require('multer');
const app = express();
// 配置存储策略
const storage = multer.diskStorage({
destination: './uploads',
filename: (req, file, cb) => {
cb(null, Date.now() + '-' + file.originalname);
}
});
const upload = multer({ storage });
app.post('/upload', upload.single('file'), (req, res) => {
if (!req.file) {
return res.status(400).send('No file uploaded.');
}
res.send(`File ${req.file.originalname} uploaded successfully.`);
});
app.listen(3000);
如何处理大文件上传的进度反馈?
前端可以通过监听 XMLHttpRequest 的 progress 事件来实现上传进度的实时反馈。虽然 fetch API 本身不支持进度监听,但可以封装一个基于 XMLHttpRequest 的工具函数,或者使用第三方库如 axios。在客户端,通过更新 UI 元素显示当前上传百分比,提升用户体验。

function uploadWithProgress(file, url) {
return new Promise((resolve, reject) => {
const formData = new FormData();
formData.append('file', file);
const xhr = new XMLHttpRequest();
xhr.open('POST', url);
xhr.upload.onprogress = (e) => {
if (e.lengthComputable) {
const percentComplete = (e.loaded / e.total) * 100;
console.log(`Uploaded ${percentComplete.toFixed(2)}%`);
}
};
xhr.onload = () => {
if (xhr.status === 200) {
resolve(xhr.response);
} else {
reject(new Error('Upload failed'));
}
};
xhr.onerror = () => reject(new Error('Network error'));
xhr.send(formData);
});
}
上传失败时如何获取错误详情?
当上传请求失败时,可以通过捕获 fetch 或 XMLHttpRequest 的错误对象来获取详细信息。对于网络错误,错误对象会包含具体的错误原因;对于 HTTP 错误,可以解析响应体中的错误消息。在前端,展示友好的错误提示,帮助开发者或用户定位问题。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











