Se ha implementado una base de datos SQLite para almacenar información de los archivos subidos, reemplazando el sistema anterior basado en localStorage.
files.db (se crea automáticamente)filesid: Identificador único del archivo (UUID)original_filename: Nombre original del archivostored_filename: Nombre del archivo en el servidorfile_size: Tamaño del archivo en bytescreated_at: Fecha de creaciónexpires_at: Fecha de expiracióndownload_count: Contador de descargasuploads/El tiempo de vida se puede configurar desde la interfaz web antes de subir el archivo. El valor se envía al servidor y se almacena en la base de datos.
/api/linksObtiene todos los enlaces guardados en la base de datos.
Respuesta:
[
{
"id": "uuid-del-archivo",
"filename": "documento.pdf",
"url": "http://localhost:5000/download/uuid-del-archivo",
"created_at": "2024-01-01T12:00:00",
"expires_at": "2024-01-02T12:00:00",
"file_size": 1024000,
"download_count": 5
}
]
/api/delete/<file_id>Elimina un archivo específico.
Respuesta:
{
"success": true,
"message": "Archivo eliminado correctamente"
}
/api/statsObtiene estadísticas de la base de datos.
Respuesta:
{
"total_files": 150,
"active_files": 120,
"total_downloads": 2500
}
Script para limpiar archivos expirados y huérfanos.
Uso:
# Limpieza completa
python cleanup.py
# Solo estadísticas
python cleanup.py --stats
# Solo limpiar base de datos
python cleanup.py --db-only
# Solo limpiar archivos físicos
python cleanup.py --files-only
# Ayuda
python cleanup.py --help
saveLinkToStorage()# Tamaño máximo de archivo (en bytes)
MAX_FILE_SIZE=16777216
# Carpeta de uploads
UPLOAD_FOLDER=uploads
# Clave secreta para sesiones
SECRET_KEY=tu_clave_secreta_aqui
La base de datos se crea automáticamente al iniciar la aplicación:
# Se ejecuta automáticamente en app.py
init_database()
hokoritemp/
├── app.py # Aplicación principal con APIs
├── database.py # Funciones de base de datos
├── cleanup.py # Script de limpieza
├── files.db # Base de datos SQLite (se crea automáticamente)
├── uploads/ # Carpeta de archivos físicos
├── static/
│ ├── app.js # JavaScript principal (actualizado)
│ └── view.js # JavaScript de vista (actualizado)
└── templates/
├── index.html # Página principal
└── myfiles.html # Página de enlaces (actualizada)
Los archivos se eliminan completamente tanto del servidor como de la base de datos, ya que son archivos temporales.
secure_filename()Se recomienda ejecutar el script de limpieza periódicamente:
# Agregar al crontab para ejecutar diariamente
0 2 * * * cd /path/to/hokoritemp && python cleanup.py
# Backup de la base de datos
cp files.db files.db.backup
# Backup de archivos
tar -czf uploads_backup.tar.gz uploads/
uploads/python cleanup.py --stats para ver estadísticaspython cleanup.py para limpiar archivos expirados# Eliminar y recrear la base de datos
rm files.db
python app.py # Se creará automáticamente