formidable upload text and files
Description
npm第三方库multiparty可处理文件上传的问题,我猜应该也能处理文件与文本同时上传的问题,但我先找到了formidable这个库来解决这一问题。表单属性
enctype="multipart/form-data"
限制了不对字符编码,但普通文本不编码无法传输。另外补充一句<input>
标签不带name
无法获取value。
npm第三方库formidable
formidable库用于处理上传的表单(包含文本和文件,主要是处理文件)
const formidable = require('formidable')
router.post('/uploadImg', function (req, res) {
const form = new formidable.IncomingForm();
form.encoding = "utf-8";
form.uploadDir = './public/img_upload';
form.parse(req, function(err, field, files) {
// console.log(field);
const oldPath = files.imgFile.path;
const newPath = oldPath + files.imgFile.name;
fs.rename(oldPath, newPath, (err)=>{
if(err) throw err;
})
// res.json(files);
res.redirect('http://localhost:8080/profile?id=' + field.username)
})
})
当服务端全部接收完客户端用
post
方式提交的文件或图片之后,触发执行回调函数function(err, field, files)
。field(object) : 表单域数据
files(object) : 上传的文件、图片等文件域
上传文件的目录需要事先建好(据说)
文件上传后无后缀名,为此重命名一下