🔖
NestJSにPOSTすると「Field value too long」がレスポンスとして返却される
はじめに
バックエンドをNestJSで作成し、作成したユーザープロフィール更新用のAPIに大きな画像ファイルを添付してアップロードすると次のようなエラーがAPIから返却されました(400 Bad Request
)
{
"message": "Field value too long",
"error": "Bad Request",
"statusCode": 400
}
解決策
例えば次のようなmodule.ts
だったとします。
src/modules/user/user.module.ts
import { UserController } from './user.controller';
import { UserService } from './user.service';
import { HttpModule } from '@nestjs/axios';
@Module({
imports: [HttpModule],
controllers: [UserController],
providers: [UserService],
})
次のようにファイルを書き換えて、ファイルのアップロードサイズの上限を上げます。
src/modules/user/user.module.ts
import { Module } from '@nestjs/common';
import { UserController } from './user.controller';
import { UserService } from './user.service';
import { HttpModule } from '@nestjs/axios';
import { MulterModule } from '@nestjs/platform-express';
// ファイルアップロードの最大サイズ
const MULTER_UPLOAD_FIELD_SIZE = 5 * 1024 * 1024; // 5MB
@Module({
imports: [
HttpModule,
MulterModule.register({
limits: { fieldSize: MULTER_UPLOAD_FIELD_SIZE },
}),
],
controllers: [UserController],
providers: [UserService],
})
export class UserModule {}
備考
NestJSの公式ドキュメントにあるようにNestJSはファイルのアップロードにExpress用のmulterミドルウェアパッケージをベースにしたモジュールを使用しています。
Expressの公式ドキュメントを見るとfieldSize
が1MBなので、これを拡張した形になります。
Discussion