Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

701
Views
cómo servir activos de Nest.js y agregar middleware para detectar solicitudes de imágenes

Estoy tratando de servir una imagen desde el servidor Nest.js y agregar un middleware para rastrear todas las solicitudes, pero la única forma en que pude hacerlo funcionar fue con 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();

¿Cómo puedo implementarlo usando el controlador o el middleware?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

El documento de nestjs le dice cómo servir archivos estáticos. En resumen, así es como lo haces:

Especifique el directorio raíz de sus activos en su main.ts

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

Use la anotación @Res para poder usar el método sendFile de express framework

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

Esta solución asume que su instalación de nestjs usa express under the hood.


Fuentes:

  • https://github.com/nestjs/nest/issues/402
  • https://docs.nestjs.com/techniques/mvc

Si desea agregar un punto aquí, asegúrese de estar usando:

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

En lugar de esto:

 const app = await NestFactory.create(AppModule);

en su archivo main.ts

over 4 years ago · Santiago Trujillo Report

0

Funcionó para mí. Simplemente inyecte este controlador en el módulo de la aplicación.

 import { Controller, Get, Req, Res } from '@nestjs/common'; @Controller('uploads') export class ServeFilesController { @Get('products/images/:imageName') invoke(@Req() req, @Res() res) { return res.sendFile(req.path, { root: './' }); } }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!