Tema para preguntas random a Chatgpt 🤖

  • Autor Autor Carlos Arreola
  • Fecha de inicio Fecha de inicio
Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR

me salio est error
El error ERR_HTTP2_PROTOCOL_ERROR generalmente indica un problema con la conexión HTTP/2 entre tu navegador y el servidor. Podría ser causado por varios factores como problemas de red, problemas de configuración del servidor, o incluso un bug en el navegador.

Aquí hay algunas posibles soluciones que podrías intentar:

1. Desactiva la conexión HTTP/2 en tu servidor para ver si ese es el problema. Tendrás que consultar la documentación de tu servidor web para saber cómo hacerlo.

2. Si estás utilizando un proxy, VPN o firewall, intenta desactivarlo temporalmente para ver si eso resuelve el problema.

3. Borra los datos del sitio web desde la configuración del navegador y recarga la página.

4. Prueba con un navegador diferente para ver si el problema se reproduce allí.

5. Mantén tu servidor y el software del sistema actualizados para asegurarte de que no están causando problemas.

Si ninguno de estos consejos te ayuda, necesitarás proporcionar más detalles sobre tu configuración y las circunstancias exactas en las que ocurre el error para poder darte una recomendación más específica.
 
Seguro. Aquí te dejo un ejemplo sencillo de cómo se podría ver tu archivo upload.php, asumiendo que estás usando Resumable.js para las subidas en "chunks" de tus archivos:

PHP:
<?php
if ($_FILES) {
    $tempPath = $_FILES['file']['tmp_name'];
    $uploadPath1 = dirname(__FILE__) . DIRECTORY_SEPARATOR;
    $uploadPath2 = $uploadPath1 . basename($_FILES['file']['name']);
   
    move_uploaded_file($tempPath, $uploadPath2);
    $answer = array('respuesta' => 'Archivo transferido');
    echo json_encode($answer);
} else {
    echo ('No hay archivos para subir');
}
?>

Esta es una versión muy básica y no tiene en cuenta la validación de los archivos ni los potenciales errores de seguridad al subir archivos. Te recomendaría que busques información sobre cómo manejar de forma segura la subida de archivos en PHP.
acabo de subir un video de 150mb y me lo subio por partes, esto es normal??
 
acabo de subir un video de 150mb y me lo subio por partes, esto es normal??
Sí, eso es normal y es uno de los beneficios de usar Resumable.js. Esta biblioteca divide los archivos grandes en piezas (chunks) más pequeñas para subirlos al servidor. Esto tiene varias ventajas como mejorar la eficiencia de la subida, permitir pausar y reanudar las subidas, y manejar mejor las interrupciones de la conexión de red. Después de que todas las piezas sean subidas, deberían ensamblarse de nuevo en el servidor para recrear el archivo original.
 
Sí, eso es normal y es uno de los beneficios de usar Resumable.js. Esta biblioteca divide los archivos grandes en piezas (chunks) más pequeñas para subirlos al servidor. Esto tiene varias ventajas como mejorar la eficiencia de la subida, permitir pausar y reanudar las subidas, y manejar mejor las interrupciones de la conexión de red. Después de que todas las piezas sean subidas, deberían ensamblarse de nuevo en el servidor para recrear el archivo original.
y como las ensamblo para que quede en 1 solo como el original??
 
Sí, eso es normal y es uno de los beneficios de usar Resumable.js. Esta biblioteca divide los archivos grandes en piezas (chunks) más pequeñas para subirlos al servidor. Esto tiene varias ventajas como mejorar la eficiencia de la subida, permitir pausar y reanudar las subidas, y manejar mejor las interrupciones de la conexión de red. Después de que todas las piezas sean subidas, deberían ensamblarse de nuevo en el servidor para recrear el archivo original.
y como uno todas las partes para que quede como el archivo original?
 
y como uno todas las partes para que quede como el archivo original?
Unir las partes de un archivo en el lado del servidor puede hacerse con PHP. Aquí te dejo un ejemplo sencillo de cómo puedes hacer esto:

PHP:
<?php
$nombre_del_archivo = $_POST['nombre_del_archivo'];
$temp_archivo = $_FILES['archivo']['tmp_name'];
$ruta_destino = 'ruta_del_directorio/' . $nombre_del_archivo;

// Si existe el archivo, se añade al final (append)
if (file_exists($ruta_destino)) {
    file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
} else { // Si no existe, se crea con el primer chunk
    move_uploaded_file($temp_archivo, $ruta_destino);
}
?>

Este es un código de ejemplo básico y deberás adaptarlo según tus necesidades. Por seguridad, también deberías agregar verificación y validación para asegurarte de que solo se está subiendo el tipo correcto de archivos y se está manejando correctamente cualquier error potencial.
 
Unir las partes de un archivo en el lado del servidor puede hacerse con PHP. Aquí te dejo un ejemplo sencillo de cómo puedes hacer esto:

PHP:
<?php
$nombre_del_archivo = $_POST['nombre_del_archivo'];
$temp_archivo = $_FILES['archivo']['tmp_name'];
$ruta_destino = 'ruta_del_directorio/' . $nombre_del_archivo;

// Si existe el archivo, se añade al final (append)
if (file_exists($ruta_destino)) {
    file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
} else { // Si no existe, se crea con el primer chunk
    move_uploaded_file($temp_archivo, $ruta_destino);
}
?>

Este es un código de ejemplo básico y deberás adaptarlo según tus necesidades. Por seguridad, también deberías agregar verificación y validación para asegurarte de que solo se está subiendo el tipo correcto de archivos y se está manejando correctamente cualquier error potencial.
mysqli_query($conexion,"INSERT INTO watch(nombre) VALUES ('".$target_gapath."')");

puedes agregar este insert solo cuando el archivo se suba al 100%??
 
mysqli_query($conexion,"INSERT INTO watch(nombre) VALUES ('".$target_gapath."')");

puedes agregar este insert solo cuando el archivo se suba al 100%??
Sí, puedes hacer esto verificando si es el último fragmento ("chunk") del archivo que se está subiendo. Resumable.js envía un parámetro llamado resumableChunkNumber que representa el número del fragmento actual, y otro llamado resumableTotalChunks que es el número total de fragmentos. Puedes comparar estos dos valores para detectar cuándo se ha subido el último fragmento.

Aquí te dejo un ejemplo de cómo puedes hacer esto:

PHP:
$esUltimoFragmento = ($_POST['resumableChunkNumber'] == $_POST['resumableTotalChunks']);

// Código para mover el fragmento del archivo...

if ($esUltimoFragmento) {
    mysqli_query($conexion,"INSERT INTO `watch`(nombre) VALUES ('".$target_gapath."')");
}

Este es solo un ejemplo básico y es posible que necesites adaptarlo ligeramente según tu implementación específica de Resumable.js. En cualquier caso, este código debe realizar la inserción en la base de datos solo una vez que se haya subido el último fragmento del archivo.
 
Sí, puedes hacer esto verificando si es el último fragmento ("chunk") del archivo que se está subiendo. Resumable.js envía un parámetro llamado resumableChunkNumber que representa el número del fragmento actual, y otro llamado resumableTotalChunks que es el número total de fragmentos. Puedes comparar estos dos valores para detectar cuándo se ha subido el último fragmento.

Aquí te dejo un ejemplo de cómo puedes hacer esto:

PHP:
$esUltimoFragmento = ($_POST['resumableChunkNumber'] == $_POST['resumableTotalChunks']);

// Código para mover el fragmento del archivo...

if ($esUltimoFragmento) {
    mysqli_query($conexion,"INSERT INTO `watch`(nombre) VALUES ('".$target_gapath."')");
}

Este es solo un ejemplo básico y es posible que necesites adaptarlo ligeramente según tu implementación específica de Resumable.js. En cualquier caso, este código debe realizar la inserción en la base de datos solo una vez que se haya subido el último fragmento del archivo.
$temp_archivo = $_FILES['file']['tmp_name'];
$ruta_destino = 'upload/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
// Si existe el archivo, se añade al final (append)
if (file_exists($ruta_destino)) {
file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
} else { // Si no existe, se crea con el primer chunk
mysqli_query($conexion,"INSERT INTO watch(nombre) VALUES ('".$ruta_destino."')");
move_uploaded_file($temp_archivo, $ruta_destino);
}

se puede hacer asi verdad??
 
$temp_archivo = $_FILES['file']['tmp_name'];
$ruta_destino = 'upload/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
// Si existe el archivo, se añade al final (append)
if (file_exists($ruta_destino)) {
file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
} else { // Si no existe, se crea con el primer chunk
mysqli_query($conexion,"INSERT INTO watch(nombre) VALUES ('".$ruta_destino."')");
move_uploaded_file($temp_archivo, $ruta_destino);
}

se puede hacer asi verdad??
Sí, tu código parece correcto, pero ten en cuenta que cada vez que un nuevo archivo se carga, crearás un nuevo nombre de archivo aleatorio. Si un archivo se divide en fragmentos (chunks), cada fragmento obtendrá un nombre de archivo diferente, lo que podría causar problemas.

Podrías solucionar esto almacenando el nombre del archivo en una variable de sesión cuando se sube el primer fragmento, y luego reutilizando ese nombre para los fragmentos subsiguientes. Aquí tienes una idea de cómo podrías hacer esto:

PHP:
session_start(); // Inicia la sesión para almacenar la ruta del archivo

$temp_archivo = $_FILES['file']['tmp_name'];

if (!isset($_SESSION['ruta_destino'])) {
    // Genera un nombre de archivo único para el nuevo archivo
    $_SESSION['ruta_destino'] = 'upload/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
}

$ruta_destino = $_SESSION['ruta_destino'];

// Si existe el archivo, se añade al final (append)
if (file_exists($ruta_destino)) {
    file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
} else { // Si no existe, se crea con el primer chunk
    mysqli_query($conexion,"INSERT INTO watch(nombre) VALUES ('".$ruta_destino."')");
    move_uploaded_file($temp_archivo, $ruta_destino);
}

Este código garantizará que todos los fragmentos del mismo archivo se carguen con el mismo nombre de archivo. Recuerda cerrar la sesión cuando hayas terminado de subir archivo para liberar el recurso.
 
Sí, tu código parece correcto, pero ten en cuenta que cada vez que un nuevo archivo se carga, crearás un nuevo nombre de archivo aleatorio. Si un archivo se divide en fragmentos (chunks), cada fragmento obtendrá un nombre de archivo diferente, lo que podría causar problemas.

Podrías solucionar esto almacenando el nombre del archivo en una variable de sesión cuando se sube el primer fragmento, y luego reutilizando ese nombre para los fragmentos subsiguientes. Aquí tienes una idea de cómo podrías hacer esto:

PHP:
session_start(); // Inicia la sesión para almacenar la ruta del archivo

$temp_archivo = $_FILES['file']['tmp_name'];

if (!isset($_SESSION['ruta_destino'])) {
    // Genera un nombre de archivo único para el nuevo archivo
    $_SESSION['ruta_destino'] = 'upload/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
}

$ruta_destino = $_SESSION['ruta_destino'];

// Si existe el archivo, se añade al final (append)
if (file_exists($ruta_destino)) {
    file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
} else { // Si no existe, se crea con el primer chunk
    mysqli_query($conexion,"INSERT INTO watch(nombre) VALUES ('".$ruta_destino."')");
    move_uploaded_file($temp_archivo, $ruta_destino);
}

Este código garantizará que todos los fragmentos del mismo archivo se carguen con el mismo nombre de archivo. Recuerda cerrar la sesión cuando hayas terminado de subir archivo para liberar el recurso.
session_start();
error_reporting(0);
if(!($conexion = mysqli_connect("localhost", "admin_rooter", "4368119vV")));
mysqli_select_db($conexion,"admin_default");
if(!empty($_FILES)){
if(is_uploaded_file($_FILES['file']['tmp_name'])){


$temp_archivo = $_FILES['file']['tmp_name'];
$ruta_destino = 'upload/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
// Si existe el archivo, se añade al final (append)
if (file_exists($ruta_destino)) {
file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
} else { // Si no existe, se crea con el primer chunk
mysqli_query($conexion,"INSERT INTO watch(nombre) VALUES ('".$ruta_destino."')");
move_uploaded_file($temp_archivo, $ruta_destino);
}
}

dices algo asi??
 
session_start();
error_reporting(0);
if(!($conexion = mysqli_connect("localhost", "admin_rooter", "4368119vV")));
mysqli_select_db($conexion,"admin_default");
if(!empty($_FILES)){
if(is_uploaded_file($_FILES['file']['tmp_name'])){


$temp_archivo = $_FILES['file']['tmp_name'];
$ruta_destino = 'upload/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
// Si existe el archivo, se añade al final (append)
if (file_exists($ruta_destino)) {
file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
} else { // Si no existe, se crea con el primer chunk
mysqli_query($conexion,"INSERT INTO watch(nombre) VALUES ('".$ruta_destino."')");
move_uploaded_file($temp_archivo, $ruta_destino);
}
}

dices algo asi??
Casi, pero debes recordar de incluir la lógica de la sesión para mantener el nombre de archivo constante a través de todas las partes de la carga. Aquí está tu código modificado:

PHP:
session_start();
error_reporting(0);
if(!($conexion = mysqli_connect("localhost", "admin_rooter", "4368119vV"))); 
mysqli_select_db($conexion,"admin_default");
if(!empty($_FILES)){
if(is_uploaded_file($_FILES['file']['tmp_name'])){

$temp_archivo = $_FILES['file']['tmp_name'];

// Aquí verificamos si ya se guardó un nombre de archivo en la sesión
if (!isset($_SESSION['ruta_destino'])) {
    $_SESSION['ruta_destino'] = 'upload/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
}

$ruta_destino = $_SESSION['ruta_destino']; 

// Si existe el archivo, se añade al final (append)
if (file_exists($ruta_destino)) {
    file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
} else { // Si no existe, se crea con el primer chunk
    mysqli_query($conexion,"INSERT INTO `watch`(nombre) VALUES ('".$ruta_destino."')");
    move_uploaded_file($temp_archivo, $ruta_destino);
}
}
}

Con este código, cuando se suba el primer fragmento de cada archivo, se generará un nombre de archivo único y se almacenará en la variable de sesión $_SESSION['ruta_destino']. En las subidas de fragmentos subsiguientes, se reutilizará el mismo nombre de archivo.
 
Casi, pero debes recordar de incluir la lógica de la sesión para mantener el nombre de archivo constante a través de todas las partes de la carga. Aquí está tu código modificado:

PHP:
session_start();
error_reporting(0);
if(!($conexion = mysqli_connect("localhost", "admin_rooter", "4368119vV")));
mysqli_select_db($conexion,"admin_default");
if(!empty($_FILES)){
if(is_uploaded_file($_FILES['file']['tmp_name'])){

$temp_archivo = $_FILES['file']['tmp_name'];

// Aquí verificamos si ya se guardó un nombre de archivo en la sesión
if (!isset($_SESSION['ruta_destino'])) {
    $_SESSION['ruta_destino'] = 'upload/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
}

$ruta_destino = $_SESSION['ruta_destino'];

// Si existe el archivo, se añade al final (append)
if (file_exists($ruta_destino)) {
    file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
} else { // Si no existe, se crea con el primer chunk
    mysqli_query($conexion,"INSERT INTO `watch`(nombre) VALUES ('".$ruta_destino."')");
    move_uploaded_file($temp_archivo, $ruta_destino);
}
}
}

Con este código, cuando se suba el primer fragmento de cada archivo, se generará un nombre de archivo único y se almacenará en la variable de sesión $_SESSION['ruta_destino']. En las subidas de fragmentos subsiguientes, se reutilizará el mismo nombre de archivo.
vale y como hago para termnar la session que me dijiste??
 
vale y como hago para termnar la session que me dijiste??
Puedes terminar la sesión o borrar la variable de sesión después de haber procesado todos los fragmentos del archivo. En tu caso, parece que quieres borrar la variable de sesión después de que el último fragmento haya sido subido y procesado. Aquí te dejo un ejemplo de cómo puedes hacer esto:

PHP:
$esUltimoFragmento = ($_POST['resumableChunkNumber'] == $_POST['resumableTotalChunks']);

// Código para mover el fragmento del archivo...

if ($esUltimoFragmento) {
    // Realiza la inserción en la base de datos
    mysqli_query($conexion,"INSERT INTO `watch`(nombre) VALUES ('".$ruta_destino."')");

    // Borra la variable de sesión
    unset($_SESSION['ruta_destino']);
}

Ese código borra la variable de sesión una vez que el último fragmento del archivo ha sido subido y procesado. Esto significa que un nuevo nombre de archivo será generado para la próxima vez que cargues un archivo.
 
Puedes terminar la sesión o borrar la variable de sesión después de haber procesado todos los fragmentos del archivo. En tu caso, parece que quieres borrar la variable de sesión después de que el último fragmento haya sido subido y procesado. Aquí te dejo un ejemplo de cómo puedes hacer esto:

PHP:
$esUltimoFragmento = ($_POST['resumableChunkNumber'] == $_POST['resumableTotalChunks']);

// Código para mover el fragmento del archivo...

if ($esUltimoFragmento) {
    // Realiza la inserción en la base de datos
    mysqli_query($conexion,"INSERT INTO `watch`(nombre) VALUES ('".$ruta_destino."')");

    // Borra la variable de sesión
    unset($_SESSION['ruta_destino']);
}

Ese código borra la variable de sesión una vez que el último fragmento del archivo ha sido subido y procesado. Esto significa que un nuevo nombre de archivo será generado para la próxima vez que cargues un archivo.
esto debo de agregarlo en upload.php verdad?
 
esto debo de agregarlo en upload.php verdad?
Sí, debes agregar este código al script de PHP que estás utilizando para manejar la carga de archivos. En tu caso, este script parece ser upload.php. Recuerda que este código de ejemplo puede necesitar modificaciones para que funcione correctamente dentro del contexto de tu aplicación. Ten en cuenta también cualquier consideración de seguridad relevante al aceptar y manejar archivos subidos por usuarios.
 
Sí, debes agregar este código al script de PHP que estás utilizando para manejar la carga de archivos. En tu caso, este script parece ser upload.php. Recuerda que este código de ejemplo puede necesitar modificaciones para que funcione correctamente dentro del contexto de tu aplicación. Ten en cuenta también cualquier consideración de seguridad relevante al aceptar y manejar archivos subidos por usuarios.
session_start();
error_reporting(0);
if(!($conexion = mysqli_connect("localhost", "admin_rooter", "4368119vV")));
mysqli_select_db($conexion,"admin_default");
if(!empty($_FILES)){
if(is_uploaded_file($_FILES['file']['tmp_name'])){
$temp_archivo = $_FILES['file']['tmp_name'];
// Aquí verificamos si ya se guardó un nombre de archivo en la sesión
if (!isset($_SESSION['ruta_destino'])) {
$_SESSION['ruta_destino'] = 'upload/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
}
$ruta_destino = $_SESSION['ruta_destino'];
// Si existe el archivo, se añade al final (append)
if (file_exists($ruta_destino)) {
file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
} else { // Si no existe, se crea con el primer chunk
mysqli_query($conexion,"INSERT INTO watch(nombre) VALUES ('".$ruta_destino."')");
move_uploaded_file($temp_archivo, $ruta_destino);
}
}
}

$esUltimoFragmento = ($_POST['resumableChunkNumber'] == $_POST['resumableTotalChunks']);

// Código para mover el fragmento del archivo...

if ($esUltimoFragmento) {
// Borra la variable de sesión
unset($_SESSION['ruta_destino']);
}

deberia de quedar asi??
 
session_start();
error_reporting(0);
if(!($conexion = mysqli_connect("localhost", "admin_rooter", "4368119vV")));
mysqli_select_db($conexion,"admin_default");
if(!empty($_FILES)){
if(is_uploaded_file($_FILES['file']['tmp_name'])){
$temp_archivo = $_FILES['file']['tmp_name'];
// Aquí verificamos si ya se guardó un nombre de archivo en la sesión
if (!isset($_SESSION['ruta_destino'])) {
$_SESSION['ruta_destino'] = 'upload/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
}
$ruta_destino = $_SESSION['ruta_destino'];
// Si existe el archivo, se añade al final (append)
if (file_exists($ruta_destino)) {
file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
} else { // Si no existe, se crea con el primer chunk
mysqli_query($conexion,"INSERT INTO watch(nombre) VALUES ('".$ruta_destino."')");
move_uploaded_file($temp_archivo, $ruta_destino);
}
}
}

$esUltimoFragmento = ($_POST['resumableChunkNumber'] == $_POST['resumableTotalChunks']);

// Código para mover el fragmento del archivo...

if ($esUltimoFragmento) {
// Borra la variable de sesión
unset($_SESSION['ruta_destino']);
}

deberia de quedar asi??
Sí, tu código parece correcto. Ten en cuenta que el script está asumiendo que los fragmentos vienen en orden. Es decir, si un fragmento sostenido llega antes del primer fragmento, podría haber un comportamiento inesperado. Pero si estás seguro de que los fragmentos siempre llegan en orden, este código debería funcionar según lo previsto.

Además, deberías chequear la existencia de las claves 'resumableChunkNumber' y 'resumableTotalChunks' antes de usarlas para evitar errores.

Recuerda siempre hacer pruebas exhaustivas para asegurarte de que todo funciona como esperabas.
 
Sí, tu código parece correcto. Ten en cuenta que el script está asumiendo que los fragmentos vienen en orden. Es decir, si un fragmento sostenido llega antes del primer fragmento, podría haber un comportamiento inesperado. Pero si estás seguro de que los fragmentos siempre llegan en orden, este código debería funcionar según lo previsto.

Además, deberías chequear la existencia de las claves 'resumableChunkNumber' y 'resumableTotalChunks' antes de usarlas para evitar errores.

Recuerda siempre hacer pruebas exhaustivas para asegurarte de que todo funciona como esperabas.
podrias hacer esto que me dices para evitar errores?
 
Atrás
Arriba