后端笔记之tegg初试

本文介绍了如何使用tegg框架创建一个接收文件上传的后端接口。首先通过egg脚手架搭建项目,然后在config中配置静态文件路径,接着在controller中编写`file.ts`,利用装饰器定义HTTPController和POST方法处理单文件上传。上传的文件被保存到指定目录,并返回文件路径给前端。
摘要由CSDN通过智能技术生成

tegg初次尝试以及写一个后端接收文件上传的接口

1.tegg

再一次用脚手架构建egg项目,发现写法全然不同,懵逼了半天才搞懂了这些注解,呸,装饰器的含义,先附上我的学习路径
tegg的github
tegg装饰器详解
首先download下egg项目之后,目录如下
在这里插入图片描述

2.写一个文件上传接收的接口,用于前端测试

由于本接口只是用于前端测试,所以文件就直接写入了项目本地,所以要在config里面提前声明项目静态文件存放地址, 打开congfig.default增加以下配置。
在这里插入图片描述
bar下面controller下新建file.ts,
代码如下

import { EggLogger, EggAppConfig } from 'egg';
import { Context, EggContext, HTTPController, HTTPMethod, HTTPMethodEnum, Inject } from '@eggjs/tegg';
import { FileService } from '@/module/foo';
import * as fs from 'fs';
import { mkdirp } from 'mkdirp';
import path from 'path';


@HTTPController({
  path: '/file',
})
export class file {
  @Inject()
  logger: EggLogger;
  @Inject()
  config: EggAppConfig;
  @Inject()
  fileService: FileService;

  @HTTPMethod({
    method: HTTPMethodEnum.POST,
    path: '/singleFileUpload',
  })
  async singleFileUpload(@Context() ctx: EggContext) {
    const file = ctx.request.files[0];
    let uploadDir = '';
    try {
      const f = fs.readFileSync(file.filepath);
      const day = new Date().getFullYear() + '-' + new Date().getMonth();
      const dir = path.join(this.config.uploadDir, day);
      await mkdirp(dir);
      uploadDir = path.join(dir, file.filename);
      fs.writeFileSync(uploadDir, f);
      const filePath = uploadDir.replaceAll('app\\', '');
      return { code: 200, data: { src: filePath } };
    } catch (e) {
      return { code: 500, msg: e };
    } finally {
      await ctx.cleanupRequestFiles();
    }
  }
}

然后,就完了呀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值