在Node.js中实现文件上传,你可以使用内置的http
模块搭建一个简单的服务器,并使用formidable
模块来处理上传的表单。以下是一个简单的例子:
首先,安装formidable
模块:
npm install formidable
然后,创建一个简单的HTTP服务器来处理文件上传:
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端口。当访问服务器时,它会显示一个用于上传文件的表单。当提交表单时,如果URL是/upload
并且请求方法是POST,服务器将使用formidable
解析请求,并将上传的文件保存在服务器的uploads
目录下。
请确保服务器的上传目录(这个例子中是uploads
)存在,并且服务器有足够的权限来写入该目录。