nodejs中我用的express版本是3,用multer上传文件,但是加上app.use(express.bodyParser());就不能上传了

nodejs中我用的express版本是3,用multer上传文件,但是加上app.use(express.bodyParser());就不能上传了,第1张

试试bodyParser的raw()。

var bodyParser = require('body-parser')

app.use(bodyParser.raw())

最开始用koa-multer,接口没问题回调执行了,但是文件没有传上去。

折腾了两天,发现注释掉 app.use(koabody()) 就可以上传了(这个问题不知道有没有人遇到过,可能是我写的有问题,如果知道是什么问题请给我留言),但是不用koa-body没办法接收post请求。

查了一下资料发现只用 koa-body 就可以完成需求, 并不需要其他中间件。

这种方法接口都不用写,你没看错,不用写接口,如果前端不在意是否有返回数据的话

当然也可以写个接口,并不影响文件保存,可以同时进行其他 *** 作。

由于我在上传图片的url里带了一个id,要根据不同的id存到不同的文件夹下,所以如果用第一个方法需要在接口回调里读文件,然后复制到相应的文件夹下,再删除这个临时文件,非常麻烦,可以用这个方法直接存到相应的文件夹下

里边的files对象就是传上来的文件,是一个集合,可以多文件同时上传,接下来要把数据还原成文件写到磁盘:

在post函数中调用,把ctx直接传进来就可以了

这里是fs官方api: http://nodejs.cn/api/fs.html

Express 介绍

Express是一个最小的,灵活的Node.js Web应用程序框架,它提供了一套强大的功能来开发Web和移动应用程序。 它有助于基于Node Web应用程序的快速开发。下面是一些Express框架的核心功能:

允许设立中间件响应HTTP请求

定义了用于执行基于HTTP方法和URL不同动作的路由表

允许动态渲染基于参数传递给模板HTML页面

安装Express

首先,安装Express 框架全局使用NPM,以便它可以被用来使用Node终端创建Web应用程序。

$ npm install express --save 

上面的命令在本地node_modules目录保存安装,并创建一个目录express在node_modules里边。还有,应该使用express安装以下几个重要的模块:

body-parser - 这是一个Node.js中间件处理JSON,Raw,文本和URL编码的表单数据

cookie-parser - 解析Cookie头和填充req.cookies通过cookie名字键控对象

multer - 这是一个Node.js的中间件处理multipart/form-data


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8053793.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存