Node.js 文件上传实现
文件上传
在 Node.js 中,可以使用 formidable 模块来处理文件上传。
C:UsersYour Name>npm install formidable安装完成后,可以在项目中引入该模块:
var formidable = require('formidable');步骤一:创建上传表单
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.write(
''
);
return res.end();
}).listen(8080);步骤二:解析上传文件
formidable 模块提供强大的功能,一旦文件上传到服务器,它会被解析并存储在临时文件夹中。
var http = require('http');
var formidable = require('formidable');
http.createServer(function (req, res) {
if (req.url == '/fileupload') {
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
res.write('文件上传成功');
res.end();
});
} else {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.write(
''
);
return res.end();
}
}).listen(8080);步骤三:移动文件
成功上传的文件将被放置在临时文件夹中,其路径可以通过 parse() 方法的回调函数获取。要将文件移动到指定的文件夹,可以使用文件系统模块并重命名文件:
var http = require('http');
var formidable = require('formidable');
var fs = require('fs');
http.createServer(function (req, res) {
if (req.url == '/fileupload') {
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
var oldpath = files.filetoupload.path;
var newpath = 'C:/Users/Your Name/' + files.filetoupload.name;
fs.rename(oldpath, newpath, function (err) {
if (err) throw err;
res.write('文件已上传并移动!');
res.end();
});
});
} else {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.write(
''
);
return res.end();
}
}).listen(8080);