一.文件上传
首先安装依赖
@koa/multer 模块是koa-multer的一个分支
koa-multer是koa社区中使用最广泛的multer中间件。由于缺乏维护,因此已将其分叉给Koa官方组织
因为@koa/multer 依赖于 multer,安装时要将 multer 一并安装上
npm install --save @koa/multer multer //使用
const multer = require('@koa/multer') // 引入
router.prefix('/upload')
配置文件存储路径以及文件名
硬盘存储 DiskStorage 和内存存储 MemoryStorage 两个存储引擎;
diskStorage方法:可以用来配置文件上传的文件目录和文件名称
diskStorage方法可传一个配置对象,配置对象包含以下两个属性
const storage = multer.diskStorage({ //调用multer的diskStorage方法,diskStorage(硬盘)存储引擎
destination(req, { originalname }, cb) { //destination目的地,文件的存储的地方
cb(null, './node_upload') //文件存储的路径
},
filename(req, { originalname }, cb) {
const ext = originalname.split('.').pop() //截取后缀
cb(null, Date.now() + '.' + ext) //文件起别名
}
})
const upload = multer({ storage })
什么是域?:一个inpuit称为1个域
单域单文件:
upload.single('固定字段')
router.post('upload1',upload.single('file'),ctx=>{
ctx.body={filename:ctx.file} //ctx.file能拿到文件名
})
单域多文件:
upload.array('字段',最大限度(可以少但不能多))
router.post('/upload',upload.array('file',5),ctx=>{
ctx.body={filename:ctx.files} //ctx.files能拿到多个文件名
})
多域单文件:
单文件maxCount只能是1
upload.fields([{name:'字段1',maxCount:1},{name:'字段2',maxCount:1}])
router.post('/upload',upload.fields([{name:'file2',maxCount:1},{name:'file2',maxCount:1}]),ctx=>{ ctx.body='1' } )
多域多文件
upload.fields([{name:'字段1',maxCount:2},{name:'字段2',maxCount:2}])
router.post('/upload',upload.fields([{name:'file2',maxCount:2},{name:'file2',maxCount:2}]),ctx=>{ ctx.body='1' } )
二、访问静态资源
koa-static静态资源中间件的功能,可以在浏览器访问静态资源
1、安装 koa-static
npm install --save koa-static
2、引入配置中间件
//在入口文件配置
//ptah是个内置模块,直接导入path模块
const path = require('path')
const static = require('koa-static');
app.use(static(
path.join( __dirname, './public')
))
// public 存放静态文件的路径,在node_upload的文件夹内
这样就可以在客户端访问静态资源了