subir video con dropzone
<?php require_once "../cabesa.php"; ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Subir Archivos de Video</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.3/dropzone.min.css" rel="stylesheet">
<style>
.dropzone {
border: 2px dashed #0087F7;
border-radius: 5px;
background: white;
}
</style>
</head>
<body>
<div class="container mt-5">
<div class="row">
<div class="col-md-6">
<h3>Subir Archivos de Video</h3>
<form id="myDropzone" class="dropzone">
<div class="row mt-3">
<div class="col-6 mb-3">
<label for="caso_id" class="form-label">Caso_id</label>
<input type="text" class="form-control" id="caso_id" name="caso_id" value="<?php echo htmlspecialchars($_GET['caso_id']); ?>" readonly>
</div>
<div class="col-6 mb-3">
<label for="carpeta" class="form-label">Carpeta</label>
<input type="text" class="form-control" id="carpeta" name="carpeta" required>
</div>
<div class="col-auto mb-3">
<label for="fecha" class="form-label">Fecha</label>
<input type="date" class="form-control" id="fecha" name="fecha" required>
</div>
<div class="col-auto mb-3">
<label for="resolvio" class="form-label">Resolvió</label>
<input type="text" class="form-control" id="resolvio" name="resolvio" required>
</div>
</div>
<button type="button" class="btn btn-success mt-3" id="submitButton">Guardar Información</button>
</form>
</div>
<div class="col-md-6">
<table id="solicitudtabla" class="table">
<thead class="thead-dark">
<tr>
<th>Id</th>
<th>Carpeta</th>
<th>Fecha</th>
<th>Resolvio</th>
<th>Video</th>
</tr>
</thead>
<tbody id="tablaBody"></tbody>
</table>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.3/dropzone.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
Dropzone.autoDiscover = false;
const myDropzone = new Dropzone("#myDropzone", {
url: "audienciaDropzon.php",
autoProcessQueue: false,
acceptedFiles: "video/*",
addRemoveLinks: true,
init: function() {
this.on("sending", function(file, xhr, formData) {
formData.append("caso_id", document.querySelector("#caso_id").value);
formData.append("carpeta", document.querySelector("#carpeta").value);
formData.append("fecha", document.querySelector("#fecha").value);
formData.append("resolvio", document.querySelector("#resolvio").value);
formData.append("action", "crear");
});
this.on("success", function(file, response) {
console.log(response);
obtenerAudiencias();
this.removeFile(file);
});
this.on("error", function(file, response) {
console.error(response);
});
}
});
document.querySelector("#submitButton").addEventListener("click", function() {
if (myDropzone.files.length === 0) {
alert("Por favor, seleccione un archivo de video para cargar.");
} else {
myDropzone.processQueue();
}
});
function obtenerAudiencias() {
$.ajax({
url: "audienciaDropzon.php",
type: "GET",
data: { caso_id: $("#caso_id").val() },
dataType: "json",
success: function(response) {
const tablaBody = $("#tablaBody");
tablaBody.empty();
response.result.forEach(function(audiencia) {
const row = $("<tr></tr>");
row.append(`<td>${audiencia.id}</td>`);
row.append(`<td>${audiencia.carpeta}</td>`);
row.append(`<td>${audiencia.fecha}</td>`);
row.append(`<td>${audiencia.resolvio}</td>`);
row.append(`<td><a href="${audiencia.ruta}" target="_blank">Ver Video</a></td>`);
tablaBody.append(row);
});
},
error: function(jqXHR, textStatus, errorThrown) {
console.error("Error al obtener las audiencias:", textStatus, errorThrown);
}
});
}
$(document).ready(function() {
obtenerAudiencias();
});
</script>
</body>
</html>
SERVIDOR::
<?php
class Conexion
{
static public function conectar()
{
try {
return new PDO("mysql:host=localhost;dbname=despacho;charset=utf8", "root", "Juzgado-01");
} catch (PDOException $e) {
echo "Error de conexión: " . $e->getMessage();
exit;
}
}
}
class AudienciasModel extends Conexion
{
static public function obtenerAudiencias($caso_id)
{
$stmt = Conexion::conectar()->prepare("
SELECT a.*, c.numero_expediente
FROM audiencias a
JOIN casos c ON a.caso_id = c.id
WHERE a.caso_id = :caso_id
");
$stmt->bindParam(":caso_id", $caso_id, PDO::PARAM_INT);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
static public function crearAudiencia($datos)
{
$stmt = Conexion::conectar()->prepare("SELECT id FROM casos WHERE id = :caso_id");
$stmt->bindParam(":caso_id", $datos['caso_id'], PDO::PARAM_INT);
$stmt->execute();
$caso = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$caso) {
return "case_not_found";
}
$stmt = Conexion::conectar()->prepare("
INSERT INTO audiencias (caso_id, carpeta, fecha, resolvio, ruta)
VALUES (:caso_id, :carpeta, :fecha, :resolvio, :ruta)
");
$stmt->bindParam(":caso_id", $datos['caso_id'], PDO::PARAM_INT);
$stmt->bindParam(":carpeta", $datos['carpeta'], PDO::PARAM_STR);
$stmt->bindParam(":fecha", $datos['fecha'], PDO::PARAM_STR);
$stmt->bindParam(":resolvio", $datos['resolvio'], PDO::PARAM_STR);
$stmt->bindParam(":ruta", $datos['ruta'], PDO::PARAM_STR);
if ($stmt->execute()) {
return "success";
} else {
return "error";
}
}
}
if ($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_GET['caso_id'])) {
$caso_id = intval($_GET['caso_id']);
$audiencias = AudienciasModel::obtenerAudiencias($caso_id);
echo json_encode(['result' => $audiencias]);
exit;
}
// Verifica si la solicitud se realizó mediante el método POST y si la acción especificada es 'crear'
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['action']) && $_POST['action'] == 'crear') {
// Verifica si se ha subido un archivo sin errores
if (isset($_FILES['file']) && $_FILES['file']['error'] == UPLOAD_ERR_OK) {
// Recoge los datos enviados en el formulario
$caso_id = intval($_POST['caso_id']); // Convierte el caso_id a un entero
$carpeta = $_POST['carpeta']; // Nombre de la carpeta
$fecha = $_POST['fecha']; // Fecha del evento
$resolvio = $_POST['resolvio']; // Nombre de la persona que resolvió el caso
// Obtiene el año y el mes actuales
$anio = date('Y');
$mes = date('m');
// Define el directorio de carga basado en el año y mes actuales
$uploadDir = __DIR__ . "/videos/$anio/$mes/";
// Si el directorio no existe, lo crea con permisos 0777 y permite la creación de directorios padres
if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0777, true);
}
// Obtiene el nombre base del archivo subido
$fileName = basename($_FILES['file']['name']);
// Define la ruta completa del archivo en el servidor
$filePath = $uploadDir . $fileName;
// Mueve el archivo subido a la ubicación definida en $filePath
if (move_uploaded_file($_FILES['file']['tmp_name'], $filePath)) {
// Define la ruta relativa del archivo para almacenar en la base de datos
$ruta = "videos/$anio/$mes/" . $fileName;
// Crea un array con los datos recopilados para la audiencia
$datos = [
'caso_id' => $caso_id,
'carpeta' => $carpeta,
'fecha' => $fecha,
'resolvio' => $resolvio,
'ruta' => $ruta
];
$resultado = AudienciasModel::crearAudiencia($datos);
// Envía una respuesta JSON con los datos de la audiencia
echo json_encode(['resultado' => $resultado]);
} else {
// En caso de error al mover el archivo, imprime "error"
echo json_encode(['resultado' => 'error-mover el archivo']);
}
} else {
// En caso de error con el archivo subido, imprime "error"
echo json_encode(['resultado' => 'error cargar archivo']);
}
// Finaliza la ejecución del script
exit;
}
?>
Comentarios
Publicar un comentario