nodejs formidable混合表单提交
废话不多说,直接上代码:
前端页面:
<!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}));
});
});
最新文章
- C# 与数据库中字段类型 Int16(short), Int32(int), Int64(long)的取值范围、区别 。string长度
- python2.1-原理之琐碎技巧
- 团队项目——站立会议 DAY1
- C#基础课程之六(临时表)DataTable使用方法
- 设置session失效时间
- 重点关注之自定义序列化方式(Protobuf和Msgpack)
- Docker初识
- MBR所在位置
- SERVER 2012 R2 core域环境下批量创建用户
- IOS 高级开发 runtime(二)
- mvc知识应用
- 201521123096《Java程序设计》第九周学习总结
- Python练习100则--部分概念的没有做
- [转帖]优化IMPDP/EXPDP导入导出速度
- day20_雷神_django第三天
- [转帖]紫光展锐5G芯片
- ssl tls 证书链 根证书和叶证书查询
- hdu4280 Island Transport 最大流
- Codeforces Round #527 (Div. 3)
- 集合栈计算机(UVa12096)
热门文章
- vue.js学习之 如何在手机上查看vue-cli构建的项目
- 《剑指offer》---跳台阶问题
- Sparsity Invariant CNNs
- css那些事儿2 经典两列布局
- cURL和file_get_contents实现模拟post请求
- vim 删除文件全部内容
- 【EF】解决EF批量操作,Z.EntityFramework.Extensions 过期方案
- C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库
- 转:狄利克雷过程(dirichlet process )的五种理解
- CentOS LVM逻辑卷管理