Node.js学习笔记之文件上传
推荐使用第三方的模块:formidable
一丶使用方法
1丶推荐一个第三方模块管理的平台 https://www.npmjs.com/,里边有各种我们需要的模块,formidable模块就可一在里边找到;
2丶进入该平台搜formidable即可
3丶具体实现功能看代码
var formidable = require('formidable'), //引入第三的文件上传模块
http = require('http'),
util = require('util'),
path = require('path'), //path和fs模块引入是为了给上传的文件改名,默认上传的文件是没有后缀名的
fs = require('fs')
var server = http.createServer(function(req, res) {
if (req.url == '/upload' && req.method.toLowerCase() == 'post') { //文件上传的提交方式必须为post,
var form = new formidable.IncomingForm();
form.uploadDir = "./dir"; //设置文件上传的接受文件夹
form.parse(req, function(err, fields, files) {
var oldpath = __dirname+'/'+files.upload.path
var newpath = __dirname +'/dir/'+ parseInt(Math.random()*1000+1000)+path.extname(files.upload.name);
fs.rename(oldpath, newpath, function(err){ //上传完毕执行文件改名,该方法为fs模块rename
if(err){throw Error("改名失败")}
res.writeHead(200, {'content-type': 'text/plain'});
res.end('success');
})
});
return;
}
res.writeHead(200, {'content-type': 'text/html'});
res.end(
'<form action="/upload" enctype="multipart/form-data" method="post">'+
'<input type="text" name="title"><br>'+
'<input type="file" name="upload" multiple="multiple"><br>'+
'<input type="submit" value="Upload">'+
'</form>'
);
})
server.listen(3000,'192.168.5.69'); //监听到自己的电脑的ip

浙公网安备 33010602011771号