fetch-subir archivo
<form id="formVideo" method="POST" enctype="multipart/form-data">
<input type="hidden" name="caso_id" value="<?php echo isset($_GET['caso_id']) ? intval($_GET['caso_id']) : ''; ?>">
<input type="hidden" name="nombreFrom" value="formVideo">
<div class="row mt-3">
<div class="col-3 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-5 mb-3">
<label for="archivo" class="form-label">Archivo</label>
<input type="file" class="form-control" id="archivo" name="archivo" required>
</div>
<div class="col-3 mb-3 d-flex align-items-end">
<button type="submit" class="btn btn-success w-100">Guardar Información</button>
</div>
</div>
</form>
// Obtener el caso_id del campo oculto en el formulario
const caso_id = document.querySelector('input[name="caso_id"]').value;
// Manejar el evento de envío del formulario de video
document.getElementById('formVideo').addEventListener('submit', (e) => {
e.preventDefault(); // Prevenir el envío normal del formulario
const formData = new FormData(e.target); // Crear un objeto FormData con los datos del formulario
// Enviar los datos del formulario a través de una solicitud fetch
fetch(`http://localhost/despachos/vistas/expediente/expAudienciaservidor.php?caso_id=${caso_id}`, {
method: 'POST',
body: formData
})
.then(response => response.json()) // Convertir la respuesta en formato JSON
.then(res => {
formVideo.reset(); // Resetea el formulario siempre
if (res.status === 'success') {
// Mostrar un mensaje de éxito y recargar la página
Swal.fire('Guardado', 'La audiencia ha sido guardada.', 'success');
obtenerAudiencias(caso_id);
} else {
// Mostrar un mensaje de error si algo falla
Swal.fire('Error', 'Hubo un problema al guardar la audiencia.', 'error');
}
});
});
Servidor::
if (isset($_POST['nombreFrom'])) {
if ($_POST['nombreFrom'] == 'formVideo') {
if (isset($_FILES['archivo']) && $_FILES['archivo']['error'] == UPLOAD_ERR_OK) {
$caso_id = intval($_POST['caso_id']);
$fecha = $_POST['fecha'];
$numero_expediente = AudienciasModel::obtenerNumeroExpediente($caso_id);
$anio = date('Y');
$mes = date('m');
$uploadDir = "videos/$anio/$mes/";
// Crear directorio si no existe
if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0777, true);
}
// Define la ruta donde se almacenarán los videos subidos
$fileName = basename($_FILES['archivo']['name']);
$filePath = $uploadDir . $fileName;
// Mover el archivo al directorio de destino
if (move_uploaded_file($_FILES['archivo']['tmp_name'], $filePath)) {
$ruta = "videos/$anio/$mes/" . rawurlencode($fileName);
$datos = [
'caso_id' => $caso_id,
'carpeta' => $numero_expediente,
'fecha' => $fecha,
'resolvio' => '',
'ruta' => $ruta
];
$resultado = AudienciasModel::crearAudiencia($datos);
echo json_encode(['status' => $resultado]);
}
}
}
}
Paso 1: Mover el archivo al directorio de destino:
if (move_uploaded_file($_FILES['archivo']['tmp_name'], $filePath)) {
move_uploaded_file: Esta función se usa para mover un archivo subido a un $_FILES['archivo']['tmp_name']: Aquí $_FILES es una superglobal de PHP que 'archivo' es el nombre del 'tmp_name' es el$filePath: Es la ruta completa donde deseas guardar el archivo en tu servidor.Paso 2: Construcción de la ruta del archivo
$ruta = "videos/$anio/$mes/" . rawurlencode($fileName);
"videos/$anio/$mes/": Es la estructura del directorio donde se almacenará el archivo. $anio y $mes probablemente se obtienen de alguna otra parte del código y se usan para organizar los archivos en carpetas según la fecha.rawurlencode($fileName): Codifica el nombre del archivo para que sea seguro usarlo en una URL. Esto es útil si el nombre del archivo contiene caracteres especiales como espacios o signos de puntuación.Paso 3: Preparación de los datos:
$datos = [
'caso_id' => $caso_id,
'carpeta' => $numero_expediente,
'fecha' => $fecha,
'resolvio' => '',
'ruta' => $ruta
];
$datos que contiene la información que se va a almacenar en la base de datos.'caso_id': Identificador único del caso.'carpeta': El número del expediente relacionado con el archivo.'fecha': Fecha en la que se está registrando la audiencia o el archivo.'resolvio': Parece ser un campo que tal vez se llenará más tarde, por eso está vacío.'ruta': La ruta del archivo que acabas de construir, la cual se almacenará en la base de datos.Paso 4: Almacenamiento de los datos en la base de datos:
$resultado = AudienciasModel::crearAudiencia($datos);
AudienciasModel::crearAudiencia($datos): Aquí se llama a un método estático crearAudiencia de la clase AudienciasModel. Este método probablemente inserta los datos en una tabla de la base de datos relacionada con las audiencias.
Paso 5: Respuesta al cliente
echo json_encode(['status' => $resultado]);
json_encode(['status' => $resultado]): Convierte un arreglo PHP en una cadena JSON. El arreglo contiene un solo valor,'status', que depende del resultado de la inserción en la base de datos.echo: Envía esta cadena JSON al cliente, lo que permitirá que el cliente sepa si la operación fue exitosa o no.
Resumen
Este código toma un archivo subido por el usuario, lo mueve a un directorio específico en el servidor, construye una ruta al archivo, almacena esa información junto con otros datos en la base de datos y luego devuelve un estado en formato JSON para indicar si la operación fue exitosa o no.
Comentarios
Publicar un comentario