NodeJs koa2实现文件上传
知识讲解
koa2框架是一个基于中间件的框架,也就是说,需要使用到的功能,比如路由(koa-router),日志(koa-logger),都可以找到相应的中间件库,即npm包,然后通过app.use(...)引进来。
本文的主题:实现文件上传就是通过引用相应的中间来实现的。
我查了一下资料,发现可以实现文件上传的中间件有3个,选择其中一个就可以了:
1)koa-body
2)busboy
3)koa-multer
关于以上三种中间件的差异可以自行网上查资料,这里我选择比较顺眼的koa-body,实用简单。
代码实现
步骤一:下载koa-body npm包
npm install koa-body –save
| npm install koa-body --save |
步骤二:在koa项目中引用koa-body中间件
|
步骤三:使用koa-body中间件后,即可通过ctx.request.files获取上传的文件
提醒:
新版本的koa-body通过ctx.request.files获取上传的文件
旧版本的koa-body通过ctx.request.body.files获取上传的文件
朋友们千万不要入坑哈,本人就入坑过半天。
步骤四:获取到文件之后,通过fs将文件保存到服务器的指定目录
上传单个文件:
|
上传多个文件:
|
前端代码
顺便把前端的代码也附上,前端通过提交表单,把文件发送到你的服务器
|
最后总结
今天在项目中实现文件上传的时候,也一不小心入了一下坑,为什么呢?(请看以上步骤三)
在网上找的大部分资料都是通过ctx.request.body.files来获取上传的文件,这个是旧版本的koa-body的获取文件方法,为了安全考虑,新版本的koa-body采用ctx.request.files来获取文件。
总结原因,以后要学会找官方文档,以官方文档为主,其他文档为辅,这样才对。
NodeJs koa2实现文件上传的更多相关文章
- nodejs+express-实现文件上传下载管理的网站
Nodejs+Express-实现文件上传下载管理的网站 项目Github地址(对你有帮助记得给星哟):https://github.com/qcer/updo 后端:基于nodejs的express ...
- koa2的文件上传
使用koa2搭建文件上传服务,后端代码 const os = require('os'); const path = require('path'); const koaBody = require( ...
- nodejs学习之文件上传
最近要做个图片上传的需求,因为服务端春节请假回家还没来,所以就我自己先折腾了一下,大概做出来个效果,后台就用了nodejs,刚开始做的时候想网上找一下资料,发现大部分资料都是用node-formida ...
- javascript结合nodejs实现多文件上传
前端文件上传功能比较依赖后端,所以第一步用nodejs实现一个供文件上传的功能接口. 因为本人对nodejs也是一知半解,所以刚开始的想法是像原始的ajax交互那样,获取上传文件的内容,然后再通过no ...
- koa2实现文件上传服务
使用方法 方法一: 使用中间介 koa-body 方法二: 自己写个借口去接收数据流并保存 方法三: 使用 koa-body 接受文件,自己写个接口做文件保存或处理等操作 这里简单记录方法三 app. ...
- nodejs+multer+ajax文件上传
前端 html代码 + ajax代码 form表单(无需指定action) <form enctype="multipart/form-data" method=" ...
- NodeJS+formidable实现文件上传加自动重命名
前述 本人node初学者,此前使用原生node实现文件上传时遇到了一些困难,只做到了.txt 和.png两中格式的文件可以正常上传,如果上传其他格式文件服务端保存的文件会无法正常打开,原因是对form ...
- nodejs实现单文件上传。
new了formidable的一个实例. formidable模块可以直接捕获当前数据流的状态并返回文件路径. 主要使用了file事件和end事件. var form = new formidable ...
- nodejs 简单http 文件上传demo
// 这是一个简单的Node HTTP,能处理当前目录的文件 // 并能实现良种特殊的URL用于测试 // 用http://localhost:8000 或http://127.0.0.1:8000 ...
随机推荐
- oracle 基于时间错的 分区表
我们的zabbix 监控使用 oracle 作为存储, 因此,需要创建基于 基于时间戳的分区表,在此将操作过程记录如下 1. 创建,四个zabbix 最大的表的分区表 create table his ...
- layer 当前页获取iframe页的DOM元素
layer.layui 开启iframe 之后,获取iframe 内容做自定义处理. parent.layer.open({ type: , title: '任務執行狀況.', shadeClose ...
- Python爬虫教程-新浪微博分布式爬虫分享
爬虫功能: 此项目实现将单机的新浪微博爬虫重构成分布式爬虫. Master机只管任务调度,不管爬数据:Slaver机只管将Request抛给Master机,需要Request的时候再从Master机拿 ...
- cmake学习资料收集
CMake 学习笔记 : https://www.jianshu.com/p/c417e4ab8b30
- 重新理解业务里程碑----HHR计划----以太一堂第二课
---- 理解业务背后的逻辑,抓住创业重点. 第一课:开始学习 1,FA : financial advisor.财务顾问. 2,本节课的目的:抓住创业的重点. 3,预热思考题: (1) 如果把你的整 ...
- VUE学习笔记二
package.json不可以写注释!!!!!!!!!!初始化:npm init -y 有时候使用 npm i node-sass -D 装不上,这时候,就必须使用 cnpm i node-sass ...
- GIS中DTM/DEM/DSM/DOM的含义
DTM(Digital Terrain Model):数字地面模型,是一个表示地面特征空间分布的数据库,一般用一系列地面点坐 标(x,y,z)及地表属性(目标类别.特征等)绗成数据阵列,以此组成数字地 ...
- LDAP-轻量级目录访问协议(统一认证)
概念 LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP. 参考资料 LDAP概念和原理介绍 我花了一个五一终于搞懂 ...
- Elasticsearch 如何使用RESTful API
所有其他语言可以使用 RESTful API 通过端口 9200 和 Elasticsearch 进行通信,你可以用你最喜爱的 web 客户端访问 Elasticsearch .事实上,正如你所看到的 ...
- TensorFlow样例一
假设原函数为 f(x) = 5x^2 + 3,为了估计出这个函数,定义参数未知的函数g(x, w) = w0 x^2 + w1 x + w2,现要找出适合的w使g(x, w) ≍ f(x).将这个问题 ...
