@koa-multer 文件上传

一.文件上传

首先安装依赖

    @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的文件夹内

这样就可以在客户端访问静态资源了

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值