背景介绍
本项目旨在开发一个小型Web应用,支持用户上传图片并下载已保存的文件。用户通过网页上传图片,后端将图片保存到本地路径,并通过下载链接实现访问。此功能核心依赖于文件读写和网络请求的处理,需确保上传和下载的稳定性、安全性及错误处理的完整性。
思路分析
1. 功能需求梳理
- 上传功能:用户上传图片,支持格式选择(如JPEG、PNG等)。
- 下载功能:浏览器返回下载链接,支持文件下载。
- 本地保存:上传后的图片存储在指定路径,并返回下载链接。
2. 核心实现逻辑
- 使用Node.js的HTTP库处理上传请求,通过PUT方法上传文件到本地路径。
- 通过响应数据写入本地文件,确保文件保存完整性。
- 处理潜在错误,如超时、网络异常等,提升应用健壮性。
代码实现
// 使用Node.js实现图片上传与下载功能
const http = require('http');
function uploadImage(filePath, outputPath) {
const uploadHeaders = { 'Content-Type': 'image/png' };
const req = new http.Request({ method: 'PUT', headers: uploadHeaders });
req.on('response', (res) => {
res.on('data', (data) => {
fs.writeFile(outputPath, data, (err) => {
if (err) console.error('文件写入失败:', err);
res.end(); // 响应成功
});
});
});
req.on('error', (err) => {
console.error('上传失败:', err.message);
res.writeHead(500, { status: 500 });
res.end();
});
req.open(filePath, 'PUT', uploadHeaders);
}
// 示例调用
uploadImage('example.jpg', 'output/12345.png');
总结
本项目的核心实现依赖于Node.js的HTTP库,通过PUT方法上传文件,并通过响应数据写入本地文件。确保文件保存的完整性和稳定性,同时处理网络异常,提升用户体验。开发过程中需关注超时和错误处理的细节,以满足实际应用需求。对于进一步扩展,可考虑添加文件格式过滤逻辑或用户身份验证机制。
该实现代码可直接运行,需在实际项目中添加网络超时和错误处理逻辑以完善功能。