B
blankito1998
Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
podrias darme el codigo completo?Implementar un manejo de archivos fragmentados en el servidor requiere un buen entendimiento de PHP y del sistema de archivos del servidor. Aquí te proporciono un ejemplo simplificado de cómo podría verse:
1. Cuando un fragmento llega, en lugar de agregarlo al archivo de destino, lo guardas en un archivo separado en un directorio temporal. Puedes usar el número de fragmento que Resumable.js envía con cada petición para nombrar el archivo (por ejemplo, "fragmento1", "fragmento2", etc.).
PHP:$temp_archivo = $_FILES['file']['tmp_name']; $numero_fragmento = $_POST['resumableChunkNumber']; file_put_contents("ruta/temporal/fragmento" . $numero_fragmento, file_get_contents($temp_archivo));
2. Cuando todos los fragmentos han sido subidos, los combinas en el orden correcto en el archivo final:
PHP:$total_fragmentos = $_POST['resumableTotalChunks']; for ($i = 1; $i <= $total_fragmentos; $i++) { $contenido_fragmento = file_get_contents("ruta/temporal/fragmento" . $i); file_put_contents($ruta_destino, $contenido_fragmento, FILE_APPEND); }
3. Luego, puedes eliminar los archivos temporales:
PHP:for ($i = 1; $i <= $total_fragmentos; $i++) { unlink("ruta/temporal/fragmento" . $i); }
Esto es solo un ejemplo y probablemente necesites ajustarlo para que funcione en tu aplicación. Deberías ser consciente de comprobar la seguridad y la limpieza del código. En casos reales, debes manejar los errores y gestionar adecuadamente los permisos de archivos y directorios.
Claro, aquí está un ejemplo simple:podrias darme el codigo completo?
<?php
if (!empty($_FILES)) {
$temp_archivo = $_FILES['file']['tmp_name'];
$numero_fragmento = $_POST['resumableChunkNumber'];
// Creamos la carpeta temporal si no existe
if (!file_exists("ruta/temporal")) {
mkdir("ruta/temporal", 0777, true);
}
// Mueve el archivo temporal a la carpeta temporal
file_put_contents("ruta/temporal/fragmento" . $numero_fragmento, file_get_contents($temp_archivo));
}
if ($_POST['resumableChunkNumber'] == $_POST['resumableTotalChunks']) {
$total_fragmentos = $_POST['resumableTotalChunks'];
$ruta_destino = 'ruta_destino';
// Una vez todos los fragmentos están subidos, los combinamos
for ($i = 1; $i <= $total_fragmentos; $i++) {
$contenido_fragmento = file_get_contents("ruta/temporal/fragmento" . $i);
file_put_contents($ruta_destino, $contenido_fragmento, FILE_APPEND);
}
// Finalmente, eliminamos los fragmentos temporales
for ($i = 1; $i <= $total_fragmentos; $i++) {
unlink("ruta/temporal/fragmento" . $i);
}
}
?>
una duda, me crea los fragmentos y los elimina pero no me deja el fragmento unidoClaro, aquí está un ejemplo simple:
PHP:<?php if (!empty($_FILES)) { $temp_archivo = $_FILES['file']['tmp_name']; $numero_fragmento = $_POST['resumableChunkNumber']; // Creamos la carpeta temporal si no existe if (!file_exists("ruta/temporal")) { mkdir("ruta/temporal", 0777, true); } // Mueve el archivo temporal a la carpeta temporal file_put_contents("ruta/temporal/fragmento" . $numero_fragmento, file_get_contents($temp_archivo)); } if ($_POST['resumableChunkNumber'] == $_POST['resumableTotalChunks']) { $total_fragmentos = $_POST['resumableTotalChunks']; $ruta_destino = 'ruta_destino'; // Una vez todos los fragmentos están subidos, los combinamos for ($i = 1; $i <= $total_fragmentos; $i++) { $contenido_fragmento = file_get_contents("ruta/temporal/fragmento" . $i); file_put_contents($ruta_destino, $contenido_fragmento, FILE_APPEND); } // Finalmente, eliminamos los fragmentos temporales for ($i = 1; $i <= $total_fragmentos; $i++) { unlink("ruta/temporal/fragmento" . $i); } } ?>
Nuevamente, este es solo un código básico de ejemplo y no aborda otros factores como la seguridad, la validación de datos, el manejo de errores y las limitaciones de tamaño de archivo. Te sugeriría que consultes la documentación de PHP y hables con un programador experimentado o busques ayuda en foros o stackoverflow si estás atascado. Recuerda ajustar las rutas según las necesidades de tu aplicación.
El problema puede estar relacionado con la ruta de destino o con los permisos de escritura. Aquí te dejo algunos puntos que podrías verificar:una duda, me crea los fragmentos y los elimina pero no me deja el fragmento unido
gracias ya pude resolver, tengo que hacer algunos ajustes y listo <3El problema puede estar relacionado con la ruta de destino o con los permisos de escritura. Aquí te dejo algunos puntos que podrías verificar:
1. Permiso de escritura: Asegúrate de que PHP tiene permisos para escribir en el directorio de destino.
2. Ruta de destino: La ruta de destino en el archivo PHP debe ser la ruta completa del archivo, incluyendo el nombre del archivo y la extensión, por ejemplo: 'ruta_destino/archivo_final.pdf'.
3. Orden de los fragmentos: Asegúrate de que los fragmentos se están uniendo en el orden correcto.
4. Depuración: Puedes usar ‘echo’ o ‘var_dump’ para rastrear y depurar tu código.
Si sigues enfrentando problemas, te sugiero buscar ayuda en foros de PHP específicos o en StackOverflow, donde podrías recibir ayuda más detallada y personalizada
¡Genial! Me alegra saber que has podido resolverlo. Si surge alguna otra pregunta en el futuro, no dudes en preguntar. ¡Buena suerte con el resto de tus ajustes!gracias ya pude resolver, tengo que hacer algunos ajustes y listo <3
como elimino todos los archivos .mp4 que contengan la palabra holaquetal en php?¡Genial! Me alegra saber que has podido resolverlo. Si surge alguna otra pregunta en el futuro, no dudes en preguntar. ¡Buena suerte con el resto de tus ajustes!
Puedes usar la funcióncomo elimino todos los archivos .mp4 que contengan la palabra holaquetal en php?
glob de PHP para obtener todos los archivos .mp4, luego con un bucle foreach puedes recorrer cada archivo y comprobar si el nombre contiene la cadena "holaquetal", de ser así lo puedes eliminar con unlink. Aquí un ejemplo:$archivos = glob('/ruta/a/tus/archivos/*.mp4'); // Ajusta esta ruta a tus necesidades
foreach($archivos as $archivo){
if(strpos($archivo, 'holaquetal') !== false){
unlink($archivo);
}
}
no me funciona, que hago?Puedes usar la funciónglobde PHP para obtener todos los archivos .mp4, luego con un bucleforeachpuedes recorrer cada archivo y comprobar si el nombre contiene la cadena "holaquetal", de ser así lo puedes eliminar conunlink. Aquí un ejemplo:
PHP:$archivos = glob('/ruta/a/tus/archivos/*.mp4'); // Ajusta esta ruta a tus necesidades foreach($archivos as $archivo){ if(strpos($archivo, 'holaquetal') !== false){ unlink($archivo); } }
Recuerda reemplazar '/ruta/a/tus/archivos/' con la ruta real donde se encuentran tus archivos .mp4. Este código eliminará todos los archivos .mp4 cuyo nombre contenga la cadena "holaquetal". Por favor, ¡usa con precaución!
Lo siento por los problemas. Veamos algunas cosas que puedes intentar:no me funciona, que hago?
$nombre_archivo = '/ruta/a/tu/archivo/holaquetal.mp4'; // Ajusta esta ruta a tu archivo específico
if (file_exists($nombre_archivo)){
unlink($nombre_archivo);
echo "Archivo eliminado";
} else {
echo "El archivo no existe";
}
ahora solo me elimina 1 solo video, los demas que tienen en el nombre holaquetal no lo eliminaLo siento por los problemas. Veamos algunas cosas que puedes intentar:
1. Revisa la ruta: Asegúrate de que la ruta donde estás buscando los archivos sea correcta.
2. Verifica tus permisos: Asegúrate de que tienes permisos para leer y eliminar archivos en el directorio.
3. Prueba si el código funciona con un archivo específico: Puedes probar el código con un único archivo .mp4 para verificar si el problema es el código en sí o algún otro factor.
Este es un ejemplo de cómo podrías probar con un archivo en particular:
PHP:$nombre_archivo = '/ruta/a/tu/archivo/holaquetal.mp4'; // Ajusta esta ruta a tu archivo específico if (file_exists($nombre_archivo)){ unlink($nombre_archivo); echo "Archivo eliminado"; } else { echo "El archivo no existe"; }
De esta manera, puedes verificar si el problema es el código en sí o algún otro factor.
Lo siento por los problemas que estás enfrentando. Puede ser que el problema se deba a cómo se está realizando la comparación en la función strpos(). Intenta con el siguiente código modificado:ahora solo me elimina 1 solo video, los demas que tienen en el nombre holaquetal no lo elimina
$archivos = glob('/ruta/a/tus/archivos/*.mp4');
foreach($archivos as $archivo){
$nombre_archivo = basename($archivo, '.mp4'); // Extrae el nombre del archivo sin la extensión
if(strpos($nombre_archivo, 'holaquetal') !== false){
if(file_exists($archivo)){
unlink($archivo);
}
}
}
mejor podrias hacer que borre cualquier tipo de archivo con ese nombre en la cadena?Lo siento por los problemas que estás enfrentando. Puede ser que el problema se deba a cómo se está realizando la comparación en la función strpos(). Intenta con el siguiente código modificado:
PHP:$archivos = glob('/ruta/a/tus/archivos/*.mp4'); foreach($archivos as $archivo){ $nombre_archivo = basename($archivo, '.mp4'); // Extrae el nombre del archivo sin la extensión if(strpos($nombre_archivo, 'holaquetal') !== false){ if(file_exists($archivo)){ unlink($archivo); } } }
Esto verificará cada archivo individualmente para ver si contiene 'holaquetal' en el nombre del archivo (sin la extensión) y luego lo eliminará si existe. Asegúrate de reemplazar '/ruta/a/tus/archivos/' con la ruta real de los archivos en tu servidor.
Claro, para eliminar cualquier tipo de archivo que contenga "holaquetal" en el nombre, puedes modificar la función glob. Veamos cómo:mejor podrias hacer que borre cualquier tipo de archivo con ese nombre en la cadena?
$archivos = glob('/ruta/a/tus/archivos/*');
foreach($archivos as $archivo){
$nombre_archivo = basename($archivo);
if(strpos($nombre_archivo, 'holaquetal') !== false){
if(file_exists($archivo)){
unlink($archivo);
}
}
}
puedes hacer que cree una sub tabla en la tabla llamada watch??Claro, aquí está un ejemplo simple:
PHP:<?php if (!empty($_FILES)) { $temp_archivo = $_FILES['file']['tmp_name']; $numero_fragmento = $_POST['resumableChunkNumber']; // Creamos la carpeta temporal si no existe if (!file_exists("ruta/temporal")) { mkdir("ruta/temporal", 0777, true); } // Mueve el archivo temporal a la carpeta temporal file_put_contents("ruta/temporal/fragmento" . $numero_fragmento, file_get_contents($temp_archivo)); } if ($_POST['resumableChunkNumber'] == $_POST['resumableTotalChunks']) { $total_fragmentos = $_POST['resumableTotalChunks']; $ruta_destino = 'ruta_destino'; // Una vez todos los fragmentos están subidos, los combinamos for ($i = 1; $i <= $total_fragmentos; $i++) { $contenido_fragmento = file_get_contents("ruta/temporal/fragmento" . $i); file_put_contents($ruta_destino, $contenido_fragmento, FILE_APPEND); } // Finalmente, eliminamos los fragmentos temporales for ($i = 1; $i <= $total_fragmentos; $i++) { unlink("ruta/temporal/fragmento" . $i); } } ?>
Nuevamente, este es solo un código básico de ejemplo y no aborda otros factores como la seguridad, la validación de datos, el manejo de errores y las limitaciones de tamaño de archivo. Te sugeriría que consultes la documentación de PHP y hables con un programador experimentado o busques ayuda en foros o stackoverflow si estás atascado. Recuerda ajustar las rutas según las necesidades de tu aplicación.
En las bases de datos, no creamos "sub-tablas" per se. Si necesitas almacenar datos relacionados con un registro en la tabla 'watch', puedes crear una nueva tabla con una clave foránea que apunte a la tabla 'watch'. Por ejemplo:puedes hacer que cree una sub tabla en la tabla llamada watch??
<?php
// Conexión base de datos
$mysqli = new mysqli('host', 'usuario', 'contraseña', 'basededatos');
// Verificamos la conexión
if ($mysqli->connect_error) {
die("La conexión ha fallado: " . $mysqli->connect_error);
}
// Creamos una nueva tabla
$sql = "CREATE TABLE SubWatch (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
watch_id INT(6) NOT NULL,
sub_atributo VARCHAR(30) NOT NULL,
FOREIGN KEY (watch_id) REFERENCES watch(id)
)";
if ($mysqli->query($sql) === TRUE) {
echo "Tabla SubWatch creado con éxito";
} else {
echo "Error creando tabla: " . $mysqli->error;
}
$mysqli->close();
?>
<?phpEn las bases de datos, no creamos "sub-tablas" per se. Si necesitas almacenar datos relacionados con un registro en la tabla 'watch', puedes crear una nueva tabla con una clave foránea que apunte a la tabla 'watch'. Por ejemplo:
PHP:<?php // Conexión base de datos $mysqli = new mysqli('host', 'usuario', 'contraseña', 'basededatos'); // Verificamos la conexión if ($mysqli->connect_error) { die("La conexión ha fallado: " . $mysqli->connect_error); } // Creamos una nueva tabla $sql = "CREATE TABLE SubWatch ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, watch_id INT(6) NOT NULL, sub_atributo VARCHAR(30) NOT NULL, FOREIGN KEY (watch_id) REFERENCES watch(id) )"; if ($mysqli->query($sql) === TRUE) { echo "Tabla SubWatch creado con éxito"; } else { echo "Error creando tabla: " . $mysqli->error; } $mysqli->close(); ?>
Este código crea una nueva tabla 'SubWatch' con una columna 'watch_id' como clave foránea. Esta clave foránea 'watch_id' se refiere a la 'id' en la tabla 'watch'. Asegúrate de modificar los valores del host, usuario, contraseña y base de datos con los tuyos.
watch(newvideo) VALUES ('".$ruta_destino."')");Tu código parece correcto en general, pero hay un par de cosas que tienes que tener en cuenta:<?php
if (!empty($_FILES)) {
$temp_archivo = $_FILES['file']['tmp_name'];
$numero_fragmento = $_POST['resumableChunkNumber'];
// Creamos la carpeta temporal si no existe
if (!file_exists("ruta/temporal")) {
mkdir("ruta/temporal", 0777, true);
}
// Mueve el archivo temporal a la carpeta temporal
file_put_contents("ruta/temporal/fragmento" . $numero_fragmento, file_get_contents($temp_archivo));
}
if ($_POST['resumableChunkNumber'] == $_POST['resumableTotalChunks']) {
$total_fragmentos = $_POST['resumableTotalChunks'];
$ruta_destino = 'ruta_destino';
// Una vez todos los fragmentos están subidos, los combinamos
for ($i = 1; $i <= $total_fragmentos; $i++) {
$contenido_fragmento = file_get_contents("ruta/temporal/fragmento" . $i);
file_put_contents($ruta_destino, $contenido_fragmento, FILE_APPEND);
}
// Finalmente, eliminamos los fragmentos temporales
for ($i = 1; $i <= $total_fragmentos; $i++) {
unlink("ruta/temporal/fragmento" . $i);
}
}
mysqli_query($conexion,"INSERT INTOwatch(newvideo) VALUES ('".$ruta_destino."')");
?>
me refiero a esto insertar algo en la tabla watch, si esta bien o hay algo mal?
mysqli_query. Asegúrate de que la variable $conexion haya sido definida y conectada correctamente a tu base de datos.$ruta_destino parece ser una cadena estática 'ruta_destino', lo cual no parece correcto. Probablemente deberías definirla adecuadamente en tu código, para que apunte a la ubicación de tu archivo subido. Esto podría parecer algo como $ruta_destino="ruta/a/tus/archivos/".$_FILES['file']['name'].newvideo en tu tabla watch existe. Asegúrate de que su tipo de dato y longitud son compatibles con los datos que estás tratando de insertar.mysqli_error($conexion) justo después de tu declaración mysqli_query para ver si hay algún error con tu consulta SQL.puedo usar esto para asegurar que esten seleccionando archivos antes de entrar al link cierto?Tu código parece correcto en general, pero hay un par de cosas que tienes que tener en cuenta:
1. Deberías conectar a tu base de datos antes de llamar amysqli_query. Asegúrate de que la variable$conexionhaya sido definida y conectada correctamente a tu base de datos.
2. La variable$ruta_destinoparece ser una cadena estática'ruta_destino', lo cual no parece correcto. Probablemente deberías definirla adecuadamente en tu código, para que apunte a la ubicación de tu archivo subido. Esto podría parecer algo como$ruta_destino="ruta/a/tus/archivos/".$_FILES['file']['name'].
3. Asegúrate de que la columnanewvideoen tu tablawatchexiste. Asegúrate de que su tipo de dato y longitud son compatibles con los datos que estás tratando de insertar.
4. Recuerda siempre sanitizar tus entradas antes de insertarlas en la base de datos para protegerte contra ataques de inyección SQL.
Si continúas encontrando errores, te recomendaría que captures y manejes errores para tener una idea clara de lo que no está funcionando. Puedes llamar amysqli_error($conexion)justo después de tu declaraciónmysqli_querypara ver si hay algún error con tu consulta SQL.
Sí, la funciónpuedo usar esto para asegurar que esten seleccionando archivos antes de entrar al link cierto?
if(is_uploaded_file($_FILES['file']['tmp_name'])){
is_uploaded_file() en PHP se usa para verificar si el archivo especificado fue cargado a través del método POST de HTTP, es decir, se ha subido correctamente. Puedes usar esto para verificar si un archivo ha sido seleccionado y subido antes de realizar otras operaciones. Aquí tienes un ejemplo:if (is_uploaded_file($_FILES['file']['tmp_name'])) {
echo "El archivo fue cargado correctamente.";
} else {
echo "¡Error! No se ha subido ningún archivo.";
}
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?