Ansichten verbessert - 1. Teil
This commit is contained in:
@@ -4,6 +4,7 @@ import { join } from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import path from 'path';
|
||||
import fs from 'fs-extra';
|
||||
import { ImageProperty } from 'src/models/main.model.js';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
@@ -13,6 +14,10 @@ export class FileService {
|
||||
private subscriptions: any;
|
||||
constructor() {
|
||||
this.loadSubscriptions();
|
||||
fs.ensureDirSync(`./pictures`);
|
||||
fs.ensureDirSync(`./pictures/profile`);
|
||||
fs.ensureDirSync(`./pictures/logo`);
|
||||
fs.ensureDirSync(`./pictures/property`);
|
||||
}
|
||||
private loadSubscriptions(): void {
|
||||
const filePath = join(__dirname,'..', 'assets', 'subscriptions.json');
|
||||
@@ -22,8 +27,49 @@ export class FileService {
|
||||
getSubscriptions() {
|
||||
return this.subscriptions
|
||||
}
|
||||
async storeFile(file: Express.Multer.File,id: string){
|
||||
async storeProfilePicture(file: Express.Multer.File,userId: string){
|
||||
const suffix = file.mimetype.includes('png')?'png':'jpg'
|
||||
await fs.outputFile(`./public/profile_${id}`,file.buffer);
|
||||
await fs.outputFile(`./pictures/profile/${userId}`,file.buffer);
|
||||
}
|
||||
async storeCompanyLogo(file: Express.Multer.File,userId: string){
|
||||
const suffix = file.mimetype.includes('png')?'png':'jpg'
|
||||
await fs.outputFile(`./pictures/logo/${userId}`,file.buffer);
|
||||
}
|
||||
async getPropertyImages(listingId: string):Promise<ImageProperty[]>{
|
||||
const result:ImageProperty[]=[]
|
||||
const directory = `./pictures/property/${listingId}`
|
||||
if (fs.existsSync(directory)){
|
||||
const files = await fs.readdir(directory);
|
||||
files.forEach(f=>{
|
||||
const image:ImageProperty={name:f,id:'',code:''};
|
||||
result.push(image)
|
||||
})
|
||||
return result;
|
||||
} else {
|
||||
return []
|
||||
}
|
||||
|
||||
}
|
||||
async storePropertyPicture(file: Express.Multer.File,listingId: string){
|
||||
const suffix = file.mimetype.includes('png')?'png':'jpg'
|
||||
const directory = `./pictures/property/${listingId}`
|
||||
fs.ensureDirSync(`${directory}`);
|
||||
const imageName = await this.getNextImageName(directory);
|
||||
await fs.outputFile(`${directory}/${imageName}`,file.buffer);
|
||||
}
|
||||
async getNextImageName(directory) {
|
||||
try {
|
||||
const files = await fs.readdir(directory);
|
||||
const imageNumbers = files
|
||||
.map(file => parseInt(file, 10)) // Dateinamen direkt in Zahlen umwandeln
|
||||
.filter(number => !isNaN(number)) // Sicherstellen, dass die Konvertierung gültig ist
|
||||
.sort((a, b) => a - b); // Aufsteigend sortieren
|
||||
|
||||
const nextNumber = imageNumbers.length > 0 ? Math.max(...imageNumbers) + 1 : 1;
|
||||
return `${nextNumber}`; // Keine Endung für den Dateinamen
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Lesen des Verzeichnisses:', error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user