上传文件到在koa2中,接收formData格式

在koa2中上传文件,接收formData格式

  1. 首先需要安装koajs/multer,前端需要将file返回给后端

    const Koa = require('koa');
    const Router = require('@koa/router');
    // 只需要安装这一个yarn add @koa/multer multer
    const multer = require('@koa/multer');
    
    const app = new Koa();
    const router = new Router();
    const upload = multer(); // note you can pass `multer` options here
    
    // add a route for uploading multiple files
    router.post(
      '/upload-multiple-files',
      upload.fields([
        {
          name: 'avatar',
          maxCount: 1
        },
        {
          name: 'boop',
          maxCount: 2
        }
      ]),
      ctx => {
        console.log('ctx.request.files', ctx.request.files);
        console.log('ctx.files', ctx.files);
        console.log('ctx.request.body', ctx.request.body);
        ctx.body = 'done';
      }
    );
    
    // add a route for uploading single files
    router.post(
      '/upload-single-file',
      upload.single('avatar'),
      ctx => {
        console.log('ctx.request.file', ctx.request.file);
        console.log('ctx.file', ctx.file);
        console.log('ctx.request.body', ctx.request.body);
        ctx.body = 'done';
      }
    );
    
    
  2. 前端传递数据使用formData格式数据

    在这里插入图片描述

在这里插入图片描述

  1. 后端接收并且,将接收的文件进行处理,上传到oss
    1. 解析传递过来的文件,上传到oss

      oss配置../config/index

      oss: {
              accessKeyId: '', // 密钥ID
              accessKeySecret: '', // 密钥
              bucket: '', // 存储空间名
              region: '' // 存储空间所在地域
          }
      
      const OSS = require('ali-oss');
      const { oss } = require('../config/index')
       const saveName = `/yuCloud/${Date.now()}_${ files.background[0].originalname }` // 位置/保存的文件名
       const upLoad = await store.put(saveName, Buffer.from(files.background[0].buffer))
      
    
    const multer = require('@koa/multer');
    const upload = multer();
    
    // 创建首页数据,前端创建了几个formData这里就需要添加几个
    // 并且名称要对应
    router.post('/create-home', upload.fields([
        { name: 'background', maxCount: 1 },
        { name: 'weather', maxCount: 1 },
      { name: 'title', maxCount: 1 },
        { name: 'content', maxCount: 1 },
    ]), async (ctx, next) => {
      try {
        const body = ctx.request.body
        const files = ctx.request.files
        const saveName = `/yuCloud/${Date.now()}_${ files.background[0].originalname }` // 位置/保存的文件名
        const upLoad = await store.put(saveName, Buffer.from(files.background[0].buffer))
        console.log( upLoad)
        ctx.body = success('', '创建成功')
      } catch (e) {
        console.log(e)
        ctx.body = fail('创建失败')
      }
    })
    
    
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值