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)