gpt4 book ai didi

node.js - 如何从 Nest.js 提供 Assets 并添加中间件来检测图像请求

转载 作者:搜寻专家 更新时间:2023-10-31 22:57:26 25 4
gpt4 key购买 nike

我正在尝试从 Nest.js 服务器提供图像并添加中间件来跟踪所有请求,但我可以让它工作的唯一方法是使用 express

import { NestFactory } from '@nestjs/core';
import * as bodyParser from "body-parser";
import {AppModule} from "./app.module";
import * as path from "path";
import * as express from 'express';


async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.use(bodyParser.json({limit: '50mb'}));

app.use(function(req, res, next){
next();
});
//
app.use('/api/track/',express.static(path.join(__dirname, '/public'))); //Serves resources from public folder
app.use('/api/track/:img', function (req, res, next) {
console.log('do something');
next();
});

await app.listen(3333);
}

bootstrap();

如何使用 Controller 或中间件实现它?

最佳答案

The nestjs doc tells you, how to serve static files.简而言之,您可以这样做:

在 main.ts 中指定 Assets 的根目录

app.useStaticAssets(path.join(__dirname, '/../public'));

使用@Res注解可以使用express框架的sendFile方法

@Get('track/:imgId')
test(@Param('imgId') imgId, @Res() res) {
const imgPath = getImgPath(imgId);
return res.sendFile(imgPath, { root: 'public' });
}

此解决方案假定您的 nestjs 安装在后台使用 express。


来源:

这里要加点,请确定你使用的是:

const app = await NestFactory.create<NestExpressApplication>(AppModule);

取而代之的是:

const app = await NestFactory.create(AppModule);

在你的 main.ts 文件中。

关于node.js - 如何从 Nest.js 提供 Assets 并添加中间件来检测图像请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51045980/

25 4 0
文章推荐: node.js - 作为 npm 存储库的 Nexus 3 找不到某些依赖项 : npm ERR! 404 Not Found:
文章推荐: php - 如何确定重定向到 https 的位置
文章推荐: Swift:如果让冗余
文章推荐: php - 使用 getElementById 从