@nestjs/swagger#ApiConsumes TypeScript Examples
The following examples show how to use
@nestjs/swagger#ApiConsumes.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: api-properties.ts From aqualink-app with MIT License | 9 votes |
ApiFileUpload = () => {
const maxFileSizeMB = process.env.STORAGE_MAX_FILE_SIZE_MB
? parseInt(process.env.STORAGE_MAX_FILE_SIZE_MB, 10)
: 1;
return applyDecorators(
ApiConsumes('multipart/form-data'),
ApiBody({
schema: {
type: 'object',
properties: {
file: {
description: `The image to upload (image/jpeg, image/png, image/tiff). Max size: ${maxFileSizeMB}MB`,
type: 'string',
format: 'binary',
},
},
},
}),
);
}
Example #2
Source File: profile.controller.ts From codeclannigeria-backend with MIT License | 6 votes |
@Post('upload_profile_photo')
@UseInterceptors(FileInterceptor('file'))
@ApiConsumes('multipart/form-data')
@ApiBody({
description: 'Upload avatar photo',
type: AvatarUploadDto
})
@UseGuards(JwtAuthGuard)
@ApiBearerAuth()
@ApiResponse({ type: UserDto, status: HttpStatus.OK })
@HttpCode(HttpStatus.OK)
async uploadFile(
@UploadedFile() file: BufferedFile,
@Req() req: Request
): Promise<UserDto> {
if (!file) throw new BadRequestException('File image cannot be empty');
if (file.mimetype.split('/')[0] !== 'image')
throw new UnsupportedMediaTypeException('File is not an image');
if (file.size / 1024 > 200)
throw new BadRequestException('File cannot be larger than 200KB');
const id = req.user['userId'];
await this.profileService.uploadAvatar(file, id);
const user = await this.userService.findByIdAsync(id);
return plainToClass(UserDto, user, {
enableImplicitConversion: true,
excludeExtraneousValues: true
});
}
Example #3
Source File: tracks.controller.ts From codeclannigeria-backend with MIT License | 6 votes |
@Post('create_with_thumbnail')
@UseGuards(JwtAuthGuard, RolesGuard)
@Roles(UserRole.ADMIN, UserRole.MENTOR)
@ApiResponse({ type: TrackDto, status: HttpStatus.CREATED })
@ApiResponse({ status: HttpStatus.FORBIDDEN, type: ApiException })
@UseInterceptors(FileInterceptor('thumbnail'))
@ApiConsumes('multipart/form-data')
@ApiBearerAuth()
async createTrack(
@Body() input: CreateWithThumbnailTrackDto,
@UploadedFile() thumbnail: BufferedFile,
@Req() req: Request
): Promise<TrackDto> {
if (!thumbnail)
throw new BadRequestException('Thumbnail image cannot be empty');
if (thumbnail.mimetype.split('/')[0] !== 'image')
throw new UnsupportedMediaTypeException('File is not an image');
if (thumbnail.size / ONE_KB > 200)
throw new BadRequestException('File cannot be larger than 200KB');
const exist = await this.trackService.findOneAsync({
title: input.title.toUpperCase()
});
if (exist)
throw new ConflictException(
`Track with the title "${exist.title}" already exists`
);
const userId = req.user['userId'];
const thumbnailUrl = await uploadFileToCloud(thumbnail, 'avatars', userId);
const dto = input as any;
dto.thumbnailUrl = thumbnailUrl;
delete dto.thumbnail;
return await super.create(dto);
}
Example #4
Source File: app.controller.ts From nestjs-file-streaming with MIT License | 6 votes |
@ApiOperation({
summary: 'Upload a file.',
requestBody: {
content: {
'multipart/form-data': {
schema: {
type: 'object',
properties: { file: { type: 'string', format: 'binary' } },
},
},
},
},
})
@ApiConsumes('multipart/form-data')
@ApiCreatedResponse({
schema: {
properties: {
id: {
type: 'string',
example: '5e2b4cb75876c93e38b6e6aa',
},
},
},
})
@Post()
uploadFile(@Req() request: Request): Promise<{ id: string }> {
return this.appService.upload(request)
}
Example #5
Source File: images.controller.ts From Phantom with MIT License | 6 votes |
@Post('/me/uploadImage')
@ApiConsumes('multipart/form-data')
@UseInterceptors(FilesInterceptor('file'))
async uploadImage(@UploadedFiles() files, @Request() req) {
return await this.ImagesService.uploadFile(
files[0].originalname,
files[0].mimetype,
files[0].buffer,
);
}
Example #6
Source File: MediaController.ts From typescript-clean-architecture with MIT License | 6 votes |
@Post()
@HttpAuth(UserRole.ADMIN, UserRole.AUTHOR)
@HttpCode(HttpStatus.OK)
@UseInterceptors(FileInterceptor('file'))
@ApiBearerAuth()
@ApiConsumes('multipart/form-data')
@ApiBody({type: HttpRestApiModelCreateMediaBody})
@ApiQuery({name: 'name', type: 'string', required: false})
@ApiQuery({name: 'type', enum: MediaType})
@ApiResponse({status: HttpStatus.OK, type: HttpRestApiResponseMedia})
public async createMedia(
@Req() request: HttpRequestWithUser,
@UploadedFile() file: MulterFile,
@Query() query: HttpRestApiModelCreateMediaQuery
): Promise<CoreApiResponse<MediaUseCaseDto>> {
const adapter: CreateMediaAdapter = await CreateMediaAdapter.new({
executorId: request.user.id,
name : query.name || parse(file.originalname).name,
type : query.type,
file : file.buffer,
});
const createdMedia: MediaUseCaseDto = await this.createMediaUseCase.execute(adapter);
this.setFileStorageBasePath([createdMedia]);
return CoreApiResponse.success(createdMedia);
}