import { Controller, Post, UploadedFile, Get, Param, Res, UseInterceptors, StreamableFile, Header } from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { Response } from 'express';
import { createReadStream } from 'fs';
import { join } from 'path';
@Controller()
export class FileController {
@Get('file/:fileName')
@Header('Content-Type', 'application/json')
downloadFile(@Res({ passthrough: true }) res: Response, @Param('fileName') fileName): StreamableFile {
const file = createReadStream(join(process.cwd(), fileName));
res.set({
'Content-Disposition': 'attachment; filename=' + fileName
});
return new StreamableFile(file);
}
@Get('video/:fileName')
viewVideo(@Res() res: Response, @Param('fileName') fileName: string): string {
const videoPath = join(process.cwd(), fileName)
return fileName;
}
@Post('upload')
@UseInterceptors(FileInterceptor('file'))
uploadFile(@UploadedFile() file: Express.Multer.File) {
console.log(file.filename);
console.log(file.path);
return file.filename;
}
}
这是我的嵌套js代码
以下是所需日志
[Nest] 28008 - 04/18/2024,下午 1:51:21 日志 [RoutesResolver] FileController {/file}:+0ms [Nest] 28008 - 04/18/2024, 1:51:21 PM 日志 [RouterExplorer] 映射的 {/file/:fileName, GET} 路由 +1ms [Nest] 28008 - 04/18/2024, 1:51:21 PM 日志 [RouterExplorer] 映射的 {/file/upload, POST} 路由 +0ms
我的 video/:fileName 路线未映射。
如何解决? 我已经重新启动应用程序好几次了。
我多次重新启动应用程序,也尝试了不同的路线,尝试过聊天gpt但无法解决。
这是因为您在方法参数中使用了
@Res() res: Response
,在这种情况下,NEST 希望您处理响应数据,包括设置标头、状态代码和发送响应。
删除
@Res() res: Response
,端点应该映射。