0

I have already tried using koa-body and koa-bodyparser, but I am facing the same issue with both. Koa just can't reach my request files, even though I am using multipart: true.

index.ts file

import Koa from "koa";
import Router from "koa-router";
import dotenv from "dotenv-safe";
import mongoose from "mongoose";

import koaBody from "koa-body";

import investorRouter from "./controllers/investor";
import agentRouter from "./controllers/agent";
import documentRouter from "./controllers/document";
import distributionRouter from "./controllers/distribution";
import adminRouter from "./controllers/admin";

import * as multer from '@koa/multer';

dotenv.config();

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

const database_url = process.env.DATABASE_URL as string;
mongoose.connect(database_url).then(() => {
  console.log("mongo connected");
});

router.get("/", (ctx) => {
  ctx.body = "Hello, World!";
});

app.use(
  koaBody({
    multipart: true,
    formidable: {
      uploadDir: "src/misc/temp",
      keepExtensions: true,
    },
  })
);

app.use(investorRouter.routes());
app.use(adminRouter.routes());
app.use(agentRouter.routes());
app.use(documentRouter.routes());
app.use(distributionRouter.routes());

app.use(router.routes());
app.use(router.allowedMethods());

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()
  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';
  }
);

app.listen(3000, () => {
  console.log("running at http://localhost:3000");
});

Errors:

Property 'files' does not exist on type 'Request'.ts(2339)

Property 'files' does not exist on type 'ParameterizedContext<any, IRouterParamContext<any, {}>, any>'.ts(2339)

Duca
  • 25
  • 4

0 Answers0