koa上传文件

const Koa = require('koa');
const Router = require('koa-router');
const koaBody = require('koa-body');

const app = new Koa();
const router = new Router();

// 配置 koa-body 中间件,以便在请求中解析出文件上传数据
app.use(koaBody({
  multipart: true,
  formidable: {
    maxFieldsSize: 10 * 1024 * 1024, // 最大文件大小为 10MB
    multipart: true,
    keepExtensions: true // 保持原始文件的扩展名
  }
}));

// 处理文件上传请求
router.post('/upload', async (ctx, next) => {
  const file = ctx.request.files.file; // 获取上传的文件
  const reader = fs.createReadStream(file.path); // 创建可读流
  const ext = file.name.split('.').pop(); // 获取文件后缀名
  const fileName = `${Date.now()}.${ext}`; // 生成新文件名
  const stream = fs.createWriteStream(`./uploads/${fileName}`); // 创建可写流
  reader.pipe(stream); // 将可读流的数据写入可写流
  ctx.body = { message: '文件上传成功' };
});

app.use(router.routes());
app.listen(3000);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值