Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 2x 1x 1x 1x 7x 2x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 1x | import { Controller, Get, Inject, Query, Res } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { Response } from 'express';
import { DownloadsService } from './downloads.service';
@ApiTags('downloads')
@Controller('downloads')
export class DownloadsController {
public constructor(
@Inject(DownloadsService)
private readonly downloadsService: DownloadsService,
) {}
@Get()
public async downloadFile(@Query('token') token: string, @Res() response: Response) {
const { stream, filenameWithoutExtension, extension, contentType } = await this.downloadsService.streamFile(token);
const filename = `${filenameWithoutExtension || 'export'}.${extension}`;
response.set({
'Content-Type': contentType,
'Content-Disposition': `attachment; filename=${filename}`,
'X-filename': filenameWithoutExtension || 'export',
'X-extension': extension,
'Access-Control-Expose-Headers': 'X-filename,X-extension',
});
stream.pipe(response);
}
}
|