废话不多说,直接上代码:

前端页面:

<!DOCTYPE html>
<html>
<head>
<link rel=’stylesheet’ href=’/stylesheets/style.css’ />
</head>
<body>
<h5>信息:<%= locals.title %></h5>
<p>Welcome to <%= title %></p>

<img src='./images/<%= locals.imginfo %>' width='200'/>

<h2><%= locals.username %></h2>

<form method="post" enctype="multipart/form-data" action="/file-upload">
<input type="text" name="username">
<input type="password" name="password">
<input type="file" name="thumbnail">
<input type="submit">
</form>
</body>
</html>

后端处理:

//formidable
router.get('/formidable', function(req, res, next) {
res.render('formidable', {
title: 'formidable'
});
});

router.post('/file-upload', function(req, res, next) {
console.log('开始文件上传....');
var form = new formidable.IncomingForm();
//设置编辑
form.encoding = 'utf-8';
//设置文件存储路径
form.uploadDir = "./public/images/";
//保留后缀
form.keepExtensions = true;
//设置单文件大小限制
form.maxFieldsSize = 2 * 1024 * 1024;
//form.maxFields = 1000; 设置所以文件的大小总和

form.parse(req, function(err, fields, files) {
//console.log(fields);
// var originName=files.thumbnail.name;
console.log(files.thumbnail.path);
console.log('文件名:' + files.thumbnail.name);

//随机文件名调用
var t = (new Date()).getTime();
//生成随机数
var ran = parseInt(Math.random() * 8999 + 10000);
//拿到扩展名
var extname = path.extname(files.thumbnail.name);

var username = fields.username;
var password = fields.password;

//文本测试
console.log('name:' + username);
console.log('pass:' + password);

var oldpath = path.normalize(files.thumbnail.path);

//新的路径
//随机文件名调用
// let newfilename=t+ran+extname;
var newfilename = files.thumbnail.name;

//插入数据库
var img = new Img({
username: username,
newfilename: newfilename
})
img.save(function(err) {
if(err) {
console.log(err);
//res.send(400);
} else {
console.log("信息提交成功!");
res.render('formidable', { title: '文件上传成功:', imginfo: newfilename,name:username
});
}
});

var newpath = './public/images/' + newfilename;
console.warn('oldpath:' + oldpath + ' newpath:' + newpath);
fs.rename(oldpath, newpath, function(err) {
if(err) {
console.error("改名失败" + err);
}

//随机文件名调用
//res.render('formidable', { title: '文件上传成功:', imginfo: newfilename,name:username});

//原文件名
//res.render('formidable', { title: '文件上传成功:', imginfo: originName,name:username});
});

//res.end(util.inspect({fields: fields, files: files}));
});

});

最新文章

  1. C# 与数据库中字段类型 Int16(short), Int32(int), Int64(long)的取值范围、区别 。string长度
  2. python2.1-原理之琐碎技巧
  3. 团队项目——站立会议 DAY1
  4. C#基础课程之六(临时表)DataTable使用方法
  5. 设置session失效时间
  6. 重点关注之自定义序列化方式(Protobuf和Msgpack)
  7. Docker初识
  8. MBR所在位置
  9. SERVER 2012 R2 core域环境下批量创建用户
  10. IOS 高级开发 runtime(二)
  11. mvc知识应用
  12. 201521123096《Java程序设计》第九周学习总结
  13. Python练习100则--部分概念的没有做
  14. [转帖]优化IMPDP/EXPDP导入导出速度
  15. day20_雷神_django第三天
  16. [转帖]紫光展锐5G芯片
  17. ssl tls 证书链 根证书和叶证书查询
  18. hdu4280 Island Transport 最大流
  19. Codeforces Round #527 (Div. 3)
  20. 集合栈计算机(UVa12096)

热门文章

  1. vue.js学习之 如何在手机上查看vue-cli构建的项目
  2. 《剑指offer》---跳台阶问题
  3. Sparsity Invariant CNNs
  4. css那些事儿2 经典两列布局
  5. cURL和file_get_contents实现模拟post请求
  6. vim 删除文件全部内容
  7. 【EF】解决EF批量操作,Z.EntityFramework.Extensions 过期方案
  8. C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库
  9. 转:狄利克雷过程(dirichlet process )的五种理解
  10. CentOS LVM逻辑卷管理