如何使用 Node.js 开发一个文件上传功能?
在Node.js中,可以使用内置的http
模块搭建一个简单的服务器,并使用formidable
模块来处理上传的文件。以下是一个简单的例子:
首先,安装formidable
模块:
npm install formidable
然后,创建一个简单的服务器来处理文件上传:
const http = require('http');
const formidable = require('formidable');
const fs = require('fs');
const server = http.createServer((req, res) => {
if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
// 解析请求,包括文件上传
const form = new formidable.IncomingForm();
form.parse(req, (err, fields, files) => {
const oldPath = files.filetoupload.filepath;
const newPath = __dirname + '/uploads/' + files.filetoupload.originalFilename;
// 重命名文件
fs.rename(oldPath, newPath, function (err) {
if (err) throw err;
res.write('File uploaded and moved!');
res.end();
});
});
} else {
// 显示一个用于上传文件的表单
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<form action="upload" method="post" enctype="multipart/form-data">');
res.write('<input type="file" name="filetoupload"><br>');
res.write('<input type="submit">');
res.write('</form>');
return res.end();
}
});
server.listen(3000, () => {
console.log('Server is running at http://localhost:3000');
});
在上述代码中,服务器监听3000端口。当访问服务器时,它会显示一个HTML表单供用户上传文件。当接收到POST请求时,服务器使用formidable
解析请求,并将上传的文件移动到服务器上的uploads
目录下。
确保服务器运行的目录下有uploads
文件夹,以便存放上传的文件。
这只是一个简单的文件上传示例,实际应用中可能需要更多的错误处理和安全措施。
评论已关闭