<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:2000/dopost" method="post" enctype="multipart/form-data">
<input type="text" name="name"><br><br>
<input type="text" name="age"><br><br>
性别:<br>
<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女<br><br>
爱好:<br>
<input type="checkbox" name="like" value="睡觉">睡觉
<input type="checkbox" name="like" value="画画">画画
<input type="checkbox" name="like" value="游戏">游戏<br><br>
<p>
图片:
<input type="file" name="tupian" />
</p><br><br>
<input type="submit">
</form>
</body>
</html>
/**
* Created by Administrator on 2017/4/28 0028.
*/
var http = require('http');
var querystring = require('querystring');
var formidable = require('formidable');
var util = require('util');
var path = require('path');
var fs = require('fs');
var sd = require('silly-datetime');
var iTimer = sd.format(new Date(), 'YYYYMMDDHHmmss');
var server = http.createServer(function (req,res) {
//如果你的访问地址是这个,并且请求类型是post
if(req.url == '/dopost' && req.method.toLowerCase() == 'post'){
//解析文件上传
var form = new formidable.IncomingForm();
//设置文件上传存放置的位置
form.uploadDir = "./upload";
//执行里面回调函数的时候,表单已经全部接收完毕
form.parse(req, function(err, fields, files) {
if(err){
throw err;
}
//获取已经有的路径
var oldpath = __dirname + '/' + files.tupian.path;
//设置新的路径
var extname = path.extname(files.tupian.name);//获取原有图片的拓展名.jpg
var imgran = parseInt(Math.random() * 8999 +1000);
var imgname = iTimer + imgran;//设置新的图片名称 时间,使用了第三方模块,silly-datetime(iTimer)
//新的路径由三个部分组成:时间戳、随机数、拓展名
var newpath = __dirname + '/upload/' + imgname +extname;
fs.rename(oldpath,newpath,function (err) {
if(err){
throw Error('图片识别失败');
}
//所有的文本域、单选框,都在fields存放;
//所有的文件域,files
res.writeHead(200, {'content-type': 'text/plain'});
//res.write('received upload:\n\n');
res.end('上传成功');
});
// util.inspect({fields: fields, files: files}); //检查
});
}else if(req.url == '/'){
//提交index.html表单页面
fs.readFlie('./index.html',function (data) {
res.writeHead(200,{"Content-type":"text/html"});
res.end('data');
})
}else{
res.writeHead(404,{"Content-type":"text/html"});
res.end('404');
}
})
server.listen(2000,'127.0.0.1');
欢迎分享本文,转载请保留出处:前端ABC » Nodejs/formidable/上传图片/修改设置图片名称
前端ABC