Files
APP-SIGMA-WEB/src/controladores/controlador_cloud.js
2025-06-18 02:17:58 -05:00

108 lines
3.6 KiB
JavaScript

const controlador = {};
//const dirPath = "/home/pablinux/Projects/Node/APP-SIGMA-WEB/src/public/files/";
//const var_locals = ;
//********* APP-panel control ********//
const path = require('path');
controlador.upload = (req, res) => {
if (!req.files || Object.keys(req.files).length === 0) {
return res.status(400).json({ status: 'error', message: 'Archivos no cargados' });
} else {
const file = req.files.file_toUpload;
const destinationPath = path.join(req.app.locals.dir.path_dir, file.name);
file.mv(destinationPath, (err) => {
if (err) {
console.error("Error al mover el archivo:", err);
return res.status(500).json({ status: 'error', message: 'Error al subir el archivo', error: err.message });
}
// *** Mantener la respuesta JSON ***
return res.json({ status: "success", message: `Archivo '${file.name}' subido exitosamente.` });
});
}
};
controlador.upload_video = (req, res) => {
if (!req.files || Object.keys(req.files).lenght === 0) {
return res.status(400).send({ message: 'archivos no cargados' });
} else {
const file = req.files.file_toUpload;
const path = req.app.locals.dir.path_dir + '/public/videos/' + file.name;
console.log(path);
file.mv(path, (err) => {
if (err) {
return res.status(500).send(err);
}
return res.send({ status: "success", path: path });
});
}
};
//ruta actual
const fs = require('fs'); // Asegúrate de que esta línea esté al principio del archivo si no lo está
function leer_dir(dir) {
var json = [];
// ¡CORRECCIÓN AQUÍ! Usa 'dir' directamente, sin añadir '/public/files/'
var files = fs.readdirSync(dir, { withFileTypes: true });
files.forEach(function (arch, idx) {
// Si el link para la interfaz web debe ser relativo a 'files/', esto es correcto.
json.push({ "indice": idx, "archivo": arch.name, "link": "files/" + arch.name });
// Nota: 'arch' es un objeto dirent, necesitas 'arch.name' para el nombre del archivo.
});
return json;
}
controlador.login_cloud = (req, res) => {
res.render('login_cloud', {
token: "pfx00168224"
});
};
//ojo la var locals esta en req
//ejmp: req.app.locals
controlador.cloud_panel = (req, res, next) => {
console.log(req.body);
var pwd = stringTo_md5(req.body.password);
req.getConnection((err, conn) => {
conn.query(`SELECT * FROM usuarios WHERE n_sesion = ? and clave=?`, [req.body.usuario, pwd], (err, rows) => {
if (err) {
//res.json(err);
res.render('login_cloud', { token: "error" });
} else {
try {
if (rows.length > 0) {
//let dir = procesarPath(req.params.path);
//console.log(req.app.locals.dir);
var files = leer_dir(req.app.locals.dir.path_dir);
res.render('cloud', {
data: files
});
console.log(rows);
//res.render('app_pedidos');
}else { // Agrega un else para cuando no hay resultados en la consulta
res.render('login_cloud', { msg: "Usuario o contraseña incorrectos." });
}
} catch (e) {
res.render('login_cloud',{msg:e.toString()});
next(e);
}
}
});
});
};
function stringTo_md5(data_string){
var crypto = require('crypto');
const md5 = crypto.createHash('md5').update(data_string).digest('hex');
console.log("MD5: ", md5);
return md5;
}
function token(data_string){
var crypto = require('crypto');
const md5 = crypto.createHash('md5').update(data_string).digest('hex');
//console.log("MD5: ", md5);
return md5;
}
module.exports = controlador;