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
  • nuevo destino.
  • $_FILES['archivo']['tmp_name']: Aquí $_FILES es una superglobal de PHP que
  • contiene información sobre los archivos subidos. 'archivo' es el nombre del
  • campo en el formulario HTML que contiene el archivo subido. 'tmp_name' es el
  • nombre temporal que se le asigna al archivo en el servidor antes de ser movido.
  • $filePath: Es la ruta completa donde deseas guardar el archivo en tu servidor.
  • ---

  • kk

    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
    ];
  • Aquí se está creando un arreglo asociativo $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

    Entradas populares de este blog

    Normalizar valores

    NORMALIZAR TABLA-audiencia_intervinientes

    Listar audiencias