almacenar img (sin terminar)

This commit is contained in:
2025-07-21 15:39:27 -04:00
parent c377ab69da
commit a15505ff2c
8 changed files with 153 additions and 50 deletions

View File

@@ -37,19 +37,19 @@
}
},
"dependencies": {
"@nestjs/common": "^11.0.0",
"@nestjs/core": "^11.0.0",
"@nestjs/platform-express": "^11.0.0",
"dotenv": "^16.5.0",
"drizzle-orm": "^0.40.0",
"express": "^5.1.0",
"joi": "^17.13.3",
"moment": "^2.30.1",
"path-to-regexp": "^8.2.0",
"pg": "^8.13.3",
"pino-pretty": "^13.0.0",
"reflect-metadata": "^0.2.0",
"rxjs": "^7.8.1"
"@nestjs/common": "11.0.0",
"@nestjs/core": "11.0.0",
"@nestjs/platform-express": "11.0.0",
"dotenv": "16.5.0",
"drizzle-orm": "0.40.0",
"express": "5.1.0",
"joi": "17.13.3",
"moment": "2.30.1",
"path-to-regexp": "8.2.0",
"pg": "8.13.3",
"pino-pretty": "13.0.0",
"reflect-metadata": "0.2.0",
"rxjs": "7.8.1"
},
"devDependencies": {
"@nestjs-modules/mailer": "^2.0.2",

View File

@@ -19,6 +19,7 @@ import { RolesModule } from './features/roles/roles.module';
import { UserRolesModule } from './features/user-roles/user-roles.module';
import { SurveysModule } from './features/surveys/surveys.module';
import {InventoryModule} from './features/inventory/inventory.module'
import { PicturesModule } from './features/pictures/pictures.module';
@Module({
providers: [
@@ -59,7 +60,8 @@ import {InventoryModule} from './features/inventory/inventory.module'
ConfigurationsModule,
SurveysModule,
LocationModule,
InventoryModule
InventoryModule,
PicturesModule
],
})
export class AppModule {}

View File

@@ -0,0 +1,15 @@
import { Controller, Post, UploadedFiles, UseInterceptors } from '@nestjs/common';
import { FilesInterceptor } from '@nestjs/platform-express';
import { PicturesService } from './pictures.service';
@Controller('pictures')
export class PicturesController {
constructor(private readonly picturesService: PicturesService) {}
@Post('upload')
@UseInterceptors(FilesInterceptor('files'))
async uploadFile(@UploadedFiles() files: Express.Multer.File[]) {
return this.picturesService.saveImages(files);
}
}

View File

@@ -0,0 +1,10 @@
import { Module } from '@nestjs/common';
import { PicturesController } from './pictures.controller';
import { PicturesService } from './pictures.service';
@Module({
controllers: [PicturesController],
providers: [PicturesService],
})
export class PicturesModule {}

View File

@@ -0,0 +1,43 @@
import { Injectable } from '@nestjs/common';
import { writeFile } from 'fs/promises';
import { join } from 'path';
@Injectable()
export class PicturesService {
/**
* Guarda una imagen en el directorio de imágenes.
* @param file - El archivo de imagen a guardar.
* @returns La ruta de la imagen guardada.
*/
async saveImages(file: Express.Multer.File[]): Promise<string[]> {
const picturesPath = join(__dirname, '..', '..', 'pictures');
let images : string[] = [];
file.forEach(async (pic) => {
const fileName = `${Date.now()}-${pic.originalname}`;
const filePath = join(picturesPath, fileName);
await writeFile(filePath, pic.buffer);
images.push(`/pictures/${fileName}`);
});
return images;
// // Construye la ruta al directorio de imágenes.
// const picturesPath = join(__dirname, '..', '..', 'pictures');
// // Crea un nombre de archivo único para la imagen.
// const fileName = `${Date.now()}-${file.originalname}`;
// // Construye la ruta completa al archivo de imagen.
// const filePath = join(picturesPath, fileName);
// // Escribe el archivo de imagen en el disco.
// await writeFile(filePath, file.buffer);
// // Devuelve la ruta de la imagen guardada.
// return `/pictures/${fileName}`;
}
}