Tu código parece estar bastante bien organizado y no veo ningún error obvio en la lógica de la parte del cliente. Sin embargo, si algunos videos no se suben correctamente o parecen estar mal codificados, podría haber algo mal en la forma en que tu servidor maneja y procesa los fragmentos del archivo.
La parte del servidor para esto es muy específica y compleja. Aquí hay unos puntos a considerar:
1. ¿Estás manejando correctamente las solicitudes multipart/form-data en el servidor?
2. ¿Estás guardando los fragmentos ordenadamente y puedes unirlos correctamente?
3. ¿Verificas que todos los fragmentos se hayan subido antes de unirlos?
4. ¿Eliminas los fragmentos una vez que se completó la subida del archivo?
Además, ¿estás seguro de que los archivos de video que se están subiendo son válidos y no están corruptos desde el principio?
Finalmente, te sugeriría implementar más captura de errores y logging tanto en el lado del cliente como en el servidor. Eso podría ayudarte a identificar dónde está exactamente el problema.
creo que si.. de todos modos miralo tu mismo y me avisas
<?php
if(session_status() == PHP_SESSION_NONE){
session_start();
}
error_reporting(0);
require_once('database.php');
if(!($conexion = mysqli_connect("".$hostdb."", "".$usuariodb."", "".$passworddb."")));
mysqli_select_db($conexion,"".$databasedb."");
if(!empty($_FILES)){
if(is_uploaded_file($_FILES['file']['tmp_name'])){
$temp_archivo = $_FILES['file']['tmp_name'];
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'];
if (file_exists($ruta_destino)) {
file_put_contents($ruta_destino, file_get_contents($temp_archivo), FILE_APPEND);
} else {
$peso = filesize($temp_archivo) / 1024 / 1024;
$peso = round($peso, 2);
$mochie = mysqli_query($conexion,"SELECT * FROM watch");
$koods = mysqli_num_rows($mochie)+1;
$fornier = bin2hex(random_bytes(mt_rand(4,10)));
$mocheauss = mysqli_query($conexion,"SELECT MAX(hora) AS hora FROM watch limit 0,1");
$guyears = mysqli_fetch_assoc($mocheauss);
$horato=$guyears['hora']+1;
$query_exitosa = mysqli_query($conexion,"INSERT INTO
watch
(hora,fecha,waiting,get_id,target,peso,hored,email,newmodevideo) VALUES ('".$horato."','".date('d M Y')."','".mt_rand(1,8).bin2hex(random_bytes(mt_rand(6,10)))."','".mt_rand(1,5).bin2hex(random_bytes(mt_rand(3,10)))."','".mt_rand(1,10).bin2hex(random_bytes(mt_rand(5,10)))."','".$peso."','".date("Y-m-d H:i:s",strtotime($fecha_actual."+ 72 hours"))."','".$_SESSION['email']."','".$ruta_destino."')");
$archivo_movido = move_uploaded_file($temp_archivo, $ruta_destino);
$resultada = mysqli_query($conexion, "SELECT MAX(id) AS max_id FROM watch WHERE email='".$_SESSION['email']."'");
$fiyi = mysqli_fetch_assoc($resultada);
$ultimo_id = $fiyi['max_id'];
if($archivo_movido && $query_exitosa) {
mysqli_query($conexion,"UPDATE watch SET posis='exito' WHERE email='".$_SESSION['email']."' and id='".$ultimo_id."'");
} else {
if(!$archivo_movido){
mysqli_query($conexion,"UPDATE watch SET posis='error al mover archivo' WHERE email='".$_SESSION['email']."' and id='".$ultimo_id."'");
}
if(!$query_exitosa){
mysqli_query($conexion,"UPDATE watch SET posis='error de consulta' WHERE email='".$_SESSION['email']."' and id='".$ultimo_id."'");
}
}
}
if (isset($_POST['resumableChunkNumber']) && isset($_POST['resumableTotalChunks'])) {
$esUltimoFragmento = ($_POST['resumableChunkNumber'] == $_POST['resumableTotalChunks']);
if ($esUltimoFragmento) {
unset($_SESSION['ruta_destino']);
$resultadas = mysqli_query($conexion, "SELECT MAX(id) AS max_id FROM watch WHERE email='".$_SESSION['email']."'");
$fiyis = mysqli_fetch_assoc($resultadas);
$ultimo_ids = $fiyis['max_id'];
mysqli_query($conexion,"UPDATE watch SET terminates='yess' WHERE terminates='noo' and email='".$_SESSION['email']."' and id='".$ultimo_ids."'");
}
}
}
}
?>