- generazione del PDF riscritto totalmente
- ora è possibile generarlo anche da backend - FIX: corretto la qualità del PDF e la dimensione non esatta in pixel...
This commit is contained in:
@@ -3948,45 +3948,58 @@ module.exports = {
|
||||
this.writelogfile(mystr, FILENAVE);
|
||||
},
|
||||
|
||||
async move(oldPath, newPath, callback) {
|
||||
try {
|
||||
const ris = await fs.promises.rename(oldPath, newPath);
|
||||
console.log('... File Rinominato:', oldPath, 'in:', newPath, 'ris', ris);
|
||||
callback(); // Chiamare il callback senza errori
|
||||
} catch (err) {
|
||||
if (err.code === 'EXDEV') {
|
||||
await copy(); // Se EXDEV, utilizza la funzione copy
|
||||
} else {
|
||||
console.error('Errore durante lo spostamento:', err);
|
||||
callback(err); // Passa l'errore al callback
|
||||
}
|
||||
}
|
||||
async copyFile(src, dest) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const readStream = fs.createReadStream(src);
|
||||
const writeStream = fs.createWriteStream(dest);
|
||||
|
||||
async function copy() {
|
||||
const readStream = fs.createReadStream(oldPath);
|
||||
const writeStream = fs.createWriteStream(newPath);
|
||||
|
||||
readStream.on('error', (err) => {
|
||||
console.error('Errore nella lettura del file:', err);
|
||||
callback(err); // Passa l'errore al callback
|
||||
});
|
||||
writeStream.on('error', (err) => {
|
||||
console.error('Errore nella scrittura del file:', err);
|
||||
callback(err); // Passa l'errore al callback
|
||||
});
|
||||
readStream.on('error', reject);
|
||||
writeStream.on('error', reject);
|
||||
writeStream.on('finish', resolve);
|
||||
|
||||
readStream.pipe(writeStream);
|
||||
});
|
||||
},
|
||||
|
||||
writeStream.on('finish', async () => {
|
||||
console.log('File copiato, ora rimuovo il file di origine:', oldPath);
|
||||
try {
|
||||
await fs.promises.unlink(oldPath); // Rimuovi il file originale
|
||||
callback(); // Chiama il callback al termine
|
||||
} catch (err) {
|
||||
console.error('Errore nella rimozione del file originale:', err);
|
||||
callback(err); // Passa l'errore al callback
|
||||
/**
|
||||
* Sposta un file da oldPath a newPath.
|
||||
* Se rename fallisce con EXDEV (diverso device), fa copia + delete.
|
||||
* Se la cartella di destinazione non esiste, la crea.
|
||||
* @param {string} oldPath
|
||||
* @param {string} newPath
|
||||
* @param {(err?: Error) => void} [callback] - opzionale, se non passato ritorna Promise
|
||||
*/
|
||||
async move(oldPath, newPath, callback) {
|
||||
const moveOp = async () => {
|
||||
// Assicurati che la cartella di destinazione esista
|
||||
const dir = path.dirname(newPath);
|
||||
await fs.promises.mkdir(dir, { recursive: true });
|
||||
|
||||
try {
|
||||
const newOldPath = oldPath.replace(/\/$/, '');
|
||||
const newNewPath = newPath.replace(/\/$/, '');
|
||||
await fs.promises.rename(newOldPath, newNewPath);
|
||||
console.log(`File spostato: ${oldPath} -> ${newPath}`);
|
||||
} catch (err) {
|
||||
if (err.code === 'EXDEV') {
|
||||
// Spostamento tra device diversi: copia + elimina
|
||||
await copyFile(oldPath, newPath);
|
||||
await fs.promises.unlink(oldPath);
|
||||
console.log(`File copiato e cancellato: ${oldPath} -> ${newPath}`);
|
||||
} else if (err.code === 'ENOENT') {
|
||||
throw new Error(`File non trovato: ${oldPath}`);
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
if (callback && typeof callback === 'function') {
|
||||
moveOp()
|
||||
.then(() => callback())
|
||||
.catch(callback);
|
||||
} else {
|
||||
return moveOp();
|
||||
}
|
||||
},
|
||||
|
||||
@@ -5744,13 +5757,24 @@ module.exports = {
|
||||
return 'upload/';
|
||||
},
|
||||
|
||||
getDirByTable(idapp, table) {
|
||||
let mydir = this.getdirByIdApp(idapp) + '/';
|
||||
|
||||
if (table === 'catalog') {
|
||||
mydir = 'upload/cataloghi/';
|
||||
}
|
||||
|
||||
return mydir;
|
||||
|
||||
},
|
||||
|
||||
getURLImg(idapp, table, username, img, checkifExist) {
|
||||
let dirmain = '';
|
||||
|
||||
try {
|
||||
// let dir = this.getdirByIdApp(idapp) + dirmain + '/' + this.getDirUpload();
|
||||
let dir =
|
||||
this.getHostByIdApp(idapp) +
|
||||
this.getdirByIdApp(idapp)
|
||||
'/' +
|
||||
this.getDirUpload() +
|
||||
shared_consts.getDirectoryImgByTable(table, username) +
|
||||
@@ -6159,4 +6183,8 @@ module.exports = {
|
||||
const nuovoNomeFile = nomeFile + suffisso + estensione;
|
||||
return path.join(dir, nuovoNomeFile);
|
||||
},
|
||||
|
||||
async attendiNSecondi(numsec) {
|
||||
await new Promise(resolve => setTimeout(resolve, numsec * 1000));
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user