700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > nodejs 处理表单提交文件和普通参数(enctype=“multipart/form-data“) 使用插件m

nodejs 处理表单提交文件和普通参数(enctype=“multipart/form-data“) 使用插件m

时间:2019-08-20 23:23:17

相关推荐

nodejs 处理表单提交文件和普通参数(enctype=“multipart/form-data“) 使用插件m

目录

1. 页面form是有text类型和file类型输入框,所以需要将form提交类型设置为enctype="multipart/form-data" method="post"

2.普通的参数只需要req.body.id就可以取到,而文件在这种状态下只有一个文件名,enctype="multipart/form-data",可以传输文件,但node不可以使用req.body.id来接受数据。

需要用到插件multiparty。

1. 页面form是有text类型和file类型输入框,所以需要将form提交类型设置为enctype="multipart/form-data" method="post"

<form action="/article/add" enctype="multipart/form-data" method="post"><input type="hidden" name="id" value="<%- item.id %>"><input type="hidden" name="page" value="<%- item.page %>"><div class="inputTitle">请上传封面文件</div><input type="file" name="coverImg"><div class="inputTitle">新闻内容:</div><textarea name="content" class="xheditor"><%- item.content %></textarea><% if (item.id) { %><input type="submit" value="修改"><%} else {%><input type="submit" value="发布"><%}%></form>

2.普通的参数只需要req.body.id就可以取到,而文件在这种状态下只有一个文件名,enctype="multipart/form-data",可以传输文件,但node不可以使用req.body.id来接受数据。

需要用到插件multiparty。

1.安装插件,

2.引入到当前文件

var multiparty = require('multiparty');

3.使用

新建multiparty.Form()对象form

form的parse方法将req请求作为第一个参数,第二个参数是回调函数,在函数中:

三个参数是报错信息,普通参数数组,文件数组

普通参数id获取方式:

var id = parseInt(fields.id[0])

var newsType = parseInt(fields.newsType[0]) || 0

文件获取:

var file = files.coverImg[0]

var form = new multiparty.Form()form.parse(req, function(err, fields, files) {if (err) {//console.log('上传失败', err);} else {var id = parseInt(fields.id[0])//console.log('id:',id)var newsType = parseInt(fields.newsType[0]) || 0var file = files.coverImg[0]}

这个方法是将文件存到服务器:

uploadsCover(file, dirName),第一个参数是文件,第二个参数是文件夹名字。

如:公司新闻动态的文件file 放在covers下面的company文件夹下:uploadsCover(file, 'company'),

会返回cover是文件名字,将文件名存储到数据库,前端可以通过名字cover访问到;

其中使用了fs核心模块,需要进行导入:

var fs = require('fs');

function uploadsCover(file, dirName){// var file = files.coverImg[0]// console.log(file)var rs = fs.createReadStream(file.path)var cover = dirName + file.originalFilename// console.log('cover:'+cover)var newPath = '/covers/'+ cover// console.log(newPath, '进行写文件')var ws = fs.createWriteStream('./public' + newPath)rs.pipe(ws)ws.on('finish', function() {// console.log('文件上传成功')// res.send({err: '', msg: newPath})})return cover}

nodejs 处理表单提交文件和普通参数(enctype=“multipart/form-data“) 使用插件multiparty 将图片上传到服务器的文件夹中

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。