失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > node.js使用multer中间件上传文件

node.js使用multer中间件上传文件

时间:2020-11-04 09:51:57

相关推荐

node.js使用multer中间件上传文件

web前端|js教程

node.js,中间件multer,post文件上传

web前端-js教程

本篇文章给大家介绍一下node.js使用multer中间件解决post文件上传问题的方法

通讯竞价源码,vscode调出cmd,ubuntu输命令没有反应,tomcat集群均衡,sqlite删除所有行,wordpress百度分享插件,怎样学习vue前端框架,财经类爬虫,php函数用法,seo优化入门基础seo顾问,答题网站代码,聊天的网页模板,appcan 模板,同城聚合小程序不能用lzw

jqueryeasyui后台管理系统源码,vscode写 md,ubuntu查看属性时崩溃,tomcat错误304,sqlite 复制记录6,pc轮播插件,适合net的前端框架,bt学院爬虫课程,php sqlite3,哈尔滨seo招聘,二手车网站html源码,网页 主题,选择网站导航模板,easyui框架oa办公管理系统页面模板,教学管理系统源码php,查询商品程序源码lzw

《nodejs 教学》

有意思的源码,ubuntu查看ppa仓库,爬虫陶瓷灯图片,php trimmsg,阿文seolzw

body-parser中间件,其实“极不完美” —— 它只能处理“单纯的数据”。

众所周知,post常用于两件事:

数据提交(post表单提交)

文件上传

但“大名鼎鼎”的body-parser只能做到第一点。

难受…

以前写过的图片文件上传文章中用到了formidable模块,其核心在于:

var form=new formidable.IncomingForm();

其后的form.uploadDir、field/end的监听 … 都是基于此。

好了这里我们要说的是缺点:和body-parser一样,formidable插件只能用来处理图片格式,也是一大遗憾了。

于是,笔者找到了 multer中间件 ,希望它能“拯救者支离破碎的山河” (呵呵)

multer中间件的应用之一:文件上传

(c)npm install express multer

const express = require(express);const bodyparser = require(ody-parser);//解析post数据const multer = require(multer); //解析Post文件const fs = require(fs);const pathlib = require(path); //解析文件路径 var server = express(); var objMulter = multer({dest:./www/upload}); //用户上传文件存入dest目录下server.use(objMulter.any()); //处理任何用户上传的文件 //处理post文件数据server.post(/,function(req,res){console.log(req.files[0].originalname); //req.files post文件 originalname为文件名 //获取原始拓展名+后缀名var newName = req.files[0].path+pathlib.parse(req.files[0].originalname).ext; //重命名fs.rename(req.files[0].path,newName,function(err){if(err){res.send(上传失败);}else{res.send(上传成功);}});});server.listen(8081);

这里,用req.files顶替了req.body:因为body中只能存放(文字)数锯——这里如果用body-parser的话,看到的只是控制台上显示的文件名。

代码中objMulter.any()作用是“ 获取所有数据 ”;

any()相对的还有一个single(),它里面要指定一个参数——前端里的name名!如本例中还可以这样写:

server.use(objMulter.single(f1));

前端代码如下 —— 文件提交,指定格式为multipart/form-data

文件:

今日份扩展:

node中常用path模块中的resolve方法来“指定文件”(注意第16/17行):

var http = require(http);var fs = require(fs);var path = require(path);var server = http.createServer(function (req, res) { var method = req.method; // 获取请求方法 if (method === POST) { // 暂只关注 post 请求 var dataStr = \; req.on(data, function (chunk) { // 接收到数据,先存储起来 var chunkStr = chunk.toString() dataStr += chunkStr }); req.on(end, function () { // 接收数据完成,将数据写入文件 var fileName = path.resolve(__dirname, post.txt); fs.writeFile(fileName, dataStr) res.end(OK); }); }});server.listen(8081);

编程学习!!

如果觉得《node.js使用multer中间件上传文件》对你有帮助,请点赞、收藏,并留下你的观点哦!

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