BotBeta
Admin
Sigma
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario popular!
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Suscripción a IA
El error "r.getProgress is not a function" indica que estás intentando llamar a getProgress, pero no existe en la instancia "r" de Resumable. En lugar de getProgress, Resumable.js tiene la función progress().var r = new Resumable({
target:'upload.php',
chunkSize:1*1024*1024,
simultaneousUploads:4,
testChunks:false,
throttleProgressCallbacks:1,
});
r.assignDrop(document.getElementById('dropTarget'));
r.assignBrowse(document.getElementById('browseButton'));
r.on('fileAdded', function(file) {
r.upload();
});
r.on('uploadStart', function() {
document.getElementById('mbRemaining').textContent = 'MB restantes: calculando...';
document.getElementById('timeRemaining').textContent = 'Tiempo restante: calculando...';
});
r.on('progress', function() {
var progress = r.progress() * 100;
document.getElementById('barra_estado').style.width = progress + '%';
var remainingSize = r.getSize() - r.getProgress() * r.getSize();
document.getElementById('mbRemaining').textContent = 'MB restantes: ' + (remainingSize / (1024 * 1024)).toFixed(2);
var timeRemaining = r.timeRemaining();
document.getElementById('timeRemaining').textContent = 'Tiempo restante: ' + timeRemaining + ' segundos';
});
r.on('fileSuccess', function(file, message) {
console.log('Archivo cargado correctamente', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'green';
});
r.on('fileError', function(file, message) {
console.log('Error al cargar el archivo', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'red';
});
var r = new Resumable({
// opciones de la libreria
});
r.on('fileProgress', function(file) {
console.log(file.progress()); // Imprime el progreso del archivo.
});
podrias agregar la solucion a este error "r.getProgress is not a function"??
var remainingSize = r.getSize() - r.getProgress() * r.getSize();
var remainingSize = r.getSize() - r.progress() * r.getSize();
podrias hacer el cambio por mi, para evitar errores yo..El error "r.getProgress is not a function" indica que estás intentando llamar a getProgress, pero no existe en la instancia "r" de Resumable. En lugar de getProgress, Resumable.js tiene la función progress().
En esta parte de tu código:
Insertar CODE, HTML o PHP:var remainingSize = r.getSize() - r.getProgress() * r.getSize();
Por lo que parece, estás intentando obtener el tamaño de archivo restante. En este caso, deberías usar r.progress() para obtener el progreso actual, que retorna un valor de 0 a 1. Tu código corregido debería verse así:
Insertar CODE, HTML o PHP:var remainingSize = r.getSize() - r.progress() * r.getSize();
Así debería calcular el tamaño restante correctamente. Por favor, intenta hacer este cambio y ve si resuelve tu problema.
¡Claro! Aquí está el cambio que sugerí en el código:podrias hacer el cambio por mi, para evitar errores yo..
var r = new Resumable({
target:'upload.php',
chunkSize:1*1024*1024,
simultaneousUploads:4,
testChunks:false,
throttleProgressCallbacks:1,
});
r.assignDrop(document.getElementById('dropTarget'));
r.assignBrowse(document.getElementById('browseButton'));
r.on('fileAdded', function(file) {
r.upload();
});
r.on('uploadStart', function() {
document.getElementById('mbRemaining').textContent = 'MB restantes: calculando...';
document.getElementById('timeRemaining').textContent = 'Tiempo restante: calculando...';
});
r.on('progress', function() {
var progress = r.progress() * 100;
document.getElementById('barra_estado').style.width = progress + '%';
var remainingSize = r.getSize() - r.progress() * r.getSize();
document.getElementById('mbRemaining').textContent = 'MB restantes: ' + (remainingSize / (1024 * 1024)).toFixed(2);
var timeRemaining = r.timeRemaining();
document.getElementById('timeRemaining').textContent = 'Tiempo restante: ' + timeRemaining + ' segundos';
});
r.on('fileSuccess', function(file, message) {
console.log('Archivo cargado correctamente', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'green';
});
r.on('fileError', function(file, message) {
console.log('Error al cargar el archivo', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'red';
});
var r = new Resumable({
// opciones de la libreria
});
r.on('fileProgress', function(file) {
console.log(file.progress());
});
remainingSize
al usar r.progress()
. Ahora debería calcular el tamaño restante correctamente.<?php¡Claro! Aquí está el cambio que sugerí en el código:
JavaScript:var r = new Resumable({ target:'upload.php', chunkSize:1*1024*1024, simultaneousUploads:4, testChunks:false, throttleProgressCallbacks:1, }); r.assignDrop(document.getElementById('dropTarget')); r.assignBrowse(document.getElementById('browseButton')); r.on('fileAdded', function(file) { r.upload(); }); r.on('uploadStart', function() { document.getElementById('mbRemaining').textContent = 'MB restantes: calculando...'; document.getElementById('timeRemaining').textContent = 'Tiempo restante: calculando...'; }); r.on('progress', function() { var progress = r.progress() * 100; document.getElementById('barra_estado').style.width = progress + '%'; var remainingSize = r.getSize() - r.progress() * r.getSize(); document.getElementById('mbRemaining').textContent = 'MB restantes: ' + (remainingSize / (1024 * 1024)).toFixed(2); var timeRemaining = r.timeRemaining(); document.getElementById('timeRemaining').textContent = 'Tiempo restante: ' + timeRemaining + ' segundos'; }); r.on('fileSuccess', function(file, message) { console.log('Archivo cargado correctamente', file, message); document.getElementById('barra_estado').style.backgroundColor = 'green'; }); r.on('fileError', function(file, message) { console.log('Error al cargar el archivo', file, message); document.getElementById('barra_estado').style.backgroundColor = 'red'; }); var r = new Resumable({ // opciones de la libreria }); r.on('fileProgress', function(file) { console.log(file.progress()); });
He ajustado la línea que calcula elremainingSize
al usarr.progress()
. Ahora debería calcular el tamaño restante correctamente.
El problema parece ser que estás creando una nueva instancia de Resumable y asignándola a la misma variable 'r' al final de tu código. Esto sobrescribe la instancia original de 'r' que estaba configurada para manejar la subida de archivos.<?php
echo '
<head>
<script src="../wpp/css/resumable3.js"></script>
<style>
.barra{
margin-top:10px;
margin-left:1%;
box-shadow:inset 0px 0px 5px rgba(0,0,0,.0);
background-color:#f3f3f3;
border-radius:5px;
height:25px;
clear:both;
width:98%;
}
.cancel{
background:#ed1fc3 !important;
display:none;
}
.barra_azul{
background-color:#247CC0;
border-radius:10px;
text-align:center;
line-height:25px;
display:block;
height:25px;
width:0%;
}
.barra_verde{
background-color:#2EA265 !important;
}
.barra_roja{
background-color:#DE3152 !important;
}
</style>
</head>';
?>
<!-- Este es el objetivo del drop de archivos -->
<div id="dropTarget">Arrastra y suelta los archivos aquí</div>
<!-- Este es el botón para explorar los archivos -->
<button id="browseButton">Seleccionar archivos</button>
<!-- Este es el formulario de carga de archivos -->
<form id="uploadForm" action="upload.php" method="POST" enctype="multipart/form-data">
<input type="file" id="fileInput" name="file">
</form>
<!-- Aquí se mostrará la cantidad de MB que faltan -->
<div id="mbRemaining">MB restantes: N/A</div>
<!-- Aquí se mostrará el tiempo restante -->
<div id="timeRemaining">Tiempo restante: N/A</div>
<!-- Aquí irá la barra de progreso -->
<div class='barra'><div class='barra_azul' id='barra_estado'><span></span></div></div>
<script>
var r = new Resumable({
target:'upload.php',
chunkSize:1*1024*1024,
simultaneousUploads:4,
testChunks:false,
throttleProgressCallbacks:1,
});
r.assignDrop(document.getElementById('dropTarget'));
r.assignBrowse(document.getElementById('browseButton'));
r.on('fileAdded', function(file) {
r.upload();
});
r.on('uploadStart', function() {
document.getElementById('mbRemaining').textContent = 'MB restantes: calculando...';
document.getElementById('timeRemaining').textContent = 'Tiempo restante: calculando...';
});
r.on('progress', function() {
var progress = r.progress() * 100;
document.getElementById('barra_estado').style.width = progress + '%';
var remainingSize = r.getSize() - r.progress() * r.getSize();
document.getElementById('mbRemaining').textContent = 'MB restantes: ' + (remainingSize / (1024 * 1024)).toFixed(2);
var timeRemaining = r.timeRemaining();
document.getElementById('timeRemaining').textContent = 'Tiempo restante: ' + timeRemaining + ' segundos';
});
r.on('fileSuccess', function(file, message) {
console.log('Archivo cargado correctamente', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'green';
});
r.on('fileError', function(file, message) {
console.log('Error al cargar el archivo', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'red';
});
var r = new Resumable({
// opciones de la libreria
});
r.on('fileProgress', function(file) {
console.log(file.progress());
});
</script>
quedo asi, pero ahora selecciono el archivo y no hace nada
var r = new Resumable({
// opciones de la libreria
});
r.on('fileProgress', function(file) {
console.log(file.progress());
});
elimina las lineas y enviame el codigo porfaEl problema parece ser que estás creando una nueva instancia de Resumable y asignándola a la misma variable 'r' al final de tu código. Esto sobrescribe la instancia original de 'r' que estaba configurada para manejar la subida de archivos.
Elimina estas líneas del final de tu código para solucionarlo:
JavaScript:var r = new Resumable({ // opciones de la libreria }); r.on('fileProgress', function(file) { console.log(file.progress()); });
Estas líneas están causando conflictos porque crean una nueva instancia de Resumable que no está configurada correctamente. Una vez que las elimines, la instancia original de 'r' debería manejar la subida de archivos como se esperaba.
Espero que esto resuelva tu problema. Si aún continúas teniendo problemas, no dudes en preguntar de nuevo.
¡Por supuesto! Aquí está tu código corregido sin las líneas conflictivas:elimina las lineas y enviame el codigo porfa
<?php
echo '
<head>
<script src="../wpp/css/resumable3.js"></script>
<style>
/* Estilos omitidos para brevedad */
</style>
</head>';
?>
<div id="dropTarget">Arrastra y suelta los archivos aquí</div>
<button id="browseButton">Seleccionar archivos</button>
<form id="uploadForm" action="upload.php" method="POST" enctype="multipart/form-data">
<input type="file" id="fileInput" name="file">
</form>
<div id="mbRemaining">MB restantes: N/A</div>
<div id="timeRemaining">Tiempo restante: N/A</div>
<div class='barra'><div class='barra_azul' id='barra_estado'><span></span></div></div>
<script>
var r = new Resumable({
target:'upload.php',
chunkSize:1*1024*1024,
simultaneousUploads:4,
testChunks:false,
throttleProgressCallbacks:1,
});
r.assignDrop(document.getElementById('dropTarget'));
r.assignBrowse(document.getElementById('browseButton'));
r.on('fileAdded', function(file) {
r.upload();
});
r.on('uploadStart', function() {
document.getElementById('mbRemaining').textContent = 'MB restantes: calculando...';
document.getElementById('timeRemaining').textContent = 'Tiempo restante: calculando...';
});
r.on('progress', function() {
var progress = r.progress() * 100;
document.getElementById('barra_estado').style.width = progress + '%';
var remainingSize = r.getSize() - r.progress() * r.getSize();
document.getElementById('mbRemaining').textContent = 'MB restantes: ' + (remainingSize / (1024 * 1024)).toFixed(2);
var timeRemaining = r.timeRemaining();
document.getElementById('timeRemaining').textContent = 'Tiempo restante: ' + timeRemaining + ' segundos';
});
r.on('fileSuccess', function(file, message) {
console.log('Archivo cargado correctamente', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'green';
});
r.on('fileError', function(file, message) {
console.log('Error al cargar el archivo', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'red';
});
</script>
Uncaught TypeError: r.timeRemaining is not a function¡Por supuesto! Aquí está tu código corregido sin las líneas conflictivas:
Eliminé las últimas líneas de tu código original que estaban creando una nueva instancia de Resumable.js. Ahora tu script debería funcionar como esperabas.HTML:<?php echo ' <head> <script src="../wpp/css/resumable3.js"></script> <style> /* Estilos omitidos para brevedad */ </style> </head>'; ?> <div id="dropTarget">Arrastra y suelta los archivos aquí</div> <button id="browseButton">Seleccionar archivos</button> <form id="uploadForm" action="upload.php" method="POST" enctype="multipart/form-data"> <input type="file" id="fileInput" name="file"> </form> <div id="mbRemaining">MB restantes: N/A</div> <div id="timeRemaining">Tiempo restante: N/A</div> <div class='barra'><div class='barra_azul' id='barra_estado'><span></span></div></div> <script> var r = new Resumable({ target:'upload.php', chunkSize:1*1024*1024, simultaneousUploads:4, testChunks:false, throttleProgressCallbacks:1, }); r.assignDrop(document.getElementById('dropTarget')); r.assignBrowse(document.getElementById('browseButton')); r.on('fileAdded', function(file) { r.upload(); }); r.on('uploadStart', function() { document.getElementById('mbRemaining').textContent = 'MB restantes: calculando...'; document.getElementById('timeRemaining').textContent = 'Tiempo restante: calculando...'; }); r.on('progress', function() { var progress = r.progress() * 100; document.getElementById('barra_estado').style.width = progress + '%'; var remainingSize = r.getSize() - r.progress() * r.getSize(); document.getElementById('mbRemaining').textContent = 'MB restantes: ' + (remainingSize / (1024 * 1024)).toFixed(2); var timeRemaining = r.timeRemaining(); document.getElementById('timeRemaining').textContent = 'Tiempo restante: ' + timeRemaining + ' segundos'; }); r.on('fileSuccess', function(file, message) { console.log('Archivo cargado correctamente', file, message); document.getElementById('barra_estado').style.backgroundColor = 'green'; }); r.on('fileError', function(file, message) { console.log('Error al cargar el archivo', file, message); document.getElementById('barra_estado').style.backgroundColor = 'red'; }); </script>
Lamento la confusión, pero Resumable.js no tiene una función incorporada llamadaUncaught TypeError: r.timeRemaining is not a function
at Resumable.<anonymous> (pro2.php:49:25)
at Resumable.$.fire (resumable3.js:132:46)
at Resumable.$.fire (resumable3.js:136:35)
at ResumableChunk.chunkEvent [as callback] (resumable3.js:447:26)
at ResumableChunk.$.send (resumable3.js:704:11)
at resumable3.js:893:20
at Object.each (resumable3.js:150:16)
at resumable3.js:891:13
at Object.each (resumable3.js:150:16)
at Resumable.$.uploadNextChunk (resumable3.js:889:10)
ahora me salen estos errores
timeRemaining()
. Esa podría ser la razón del error. Dependiendo de tu objetivo, podrías necesitar implementar tu propia lógica para manejar el cálculo del tiempo restante.// var timeRemaining = r.timeRemaining();
// document.getElementById('timeRemaining').textContent = 'Tiempo restante: ' + timeRemaining + ' segundos';
tengo una duda, este codigo se pausara la subida cuando se pierda la conexion y volvera a subir automaticamente??Lamento la confusión, pero Resumable.js no tiene una función incorporada llamadatimeRemaining()
. Esa podría ser la razón del error. Dependiendo de tu objetivo, podrías necesitar implementar tu propia lógica para manejar el cálculo del tiempo restante.
Por ahora, puedes comentar o eliminar la línea que causa el error:
JavaScript:// var timeRemaining = r.timeRemaining(); // document.getElementById('timeRemaining').textContent = 'Tiempo restante: ' + timeRemaining + ' segundos';
Esto debería al menos permitir que tu código funcione, aunque no calculará ni mostrará el tiempo de subida restante. Con respecto a la implementación del cálculo del tiempo restante, podrías necesitar un enfoque personalizado basado en tu aplicación y los requisitos específicos.
Sí, eso es correcto. Resumable.js está diseñado para manejar interrupciones en la conexión de red. Si se pierde la conexión durante la subida de un archivo, el proceso de subida se pausará automáticamente. Cuando la conexión se restablezca, Resumable.js intentará reanudar la subida del archivo desde donde se quedó, asumiendo que el servidor admite esta funcionalidad. Esto es especialmente útil para subir archivos grandes bajo condiciones de red inestables.tengo una duda, este codigo se pausara la subida cuando se pierda la conexion y volvera a subir automaticamente??
<?phpSí, eso es correcto. Resumable.js está diseñado para manejar interrupciones en la conexión de red. Si se pierde la conexión durante la subida de un archivo, el proceso de subida se pausará automáticamente. Cuando la conexión se restablezca, Resumable.js intentará reanudar la subida del archivo desde donde se quedó, asumiendo que el servidor admite esta funcionalidad. Esto es especialmente útil para subir archivos grandes bajo condiciones de red inestables.
Veamos si podemos encontrar el problema. Aquí hay algunas cosas que puedes verificar:<?php
session_start();
error_reporting(0);
if(!($conexion = mysqli_connect("localhost", "root", "clave")));
mysqli_select_db($conexion,"admintable");
if(!empty($_FILES) and $_FILES['file']['type'] == "video/mp4"){
if(is_uploaded_file($_FILES['file']['tmp_name'])){
sleep(1);
$source_path = $_FILES['file']['tmp_name'];
$target_path = 'prueba/'.mt_rand(1,100).bin2hex(random_bytes(mt_rand(5,15))).'.mp4';
$mocheaus = mysqli_query($conexion,"SELECT MAX(hora) AS hora FROM watch limit 0,1");
$guyear = mysqli_fetch_assoc($mocheaus);
$horais=$guyear['hora']+1;
move_uploaded_file($source_path, $target_path);
}
}
?>
ya me funciona bien todo, pero cuando finaliza de subir y reviso, no sube nada que puede ser??
if (!move_uploaded_file($source_path, $target_path)) {
echo 'Ocurrió un error al mover el archivo subido';
}
podrias hacerme el archivo upload.php??Veamos si podemos encontrar el problema. Aquí hay algunas cosas que puedes verificar:
1. Los permisos de la carpeta de destino: por favor, asegúrate de que el servidor web tenga permiso para escribir en la carpeta 'prueba'.
2. Tipo de archivo: estás comprobando explícitamente si el archivo subido es un video MP4. Si estás intentando subir un archivo de un tipo diferente, no será procesado.
3. Error de archivo: Asegúrate de que el archivo se esté subiendo correctamente sin errores. Puedes comprobarlo agregando alguna forma de manejo de errores, por ejemplo:
PHP:if (!move_uploaded_file($source_path, $target_path)) { echo 'Ocurrió un error al mover el archivo subido'; }
4. Comprueba si la función move_uploaded_file() está devolviendo false. Esto puede indicar un problema con el mover el archivo subido al destino.
5. Configuración PHP: Asegúrate de que tu configuración PHP permita subir archivos del tamaño que estás intentando subir. Las directivas que podrías necesitar ajustar en tu archivo php.ini son 'upload_max_filesize' y 'post_max_size'.
Si ninguno de estos puntos resuelve tu problema, por favor proporciona más detalles y con gusto seguiré asistiendo.
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:podrias hacerme el archivo upload.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');
}
?>
una duda, a que ruta se esta subindo el archivo??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.
En el código proporcionado, el archivo se está subiendo al mismo directorio donde se encuentra el archivouna duda, a que ruta se esta subindo el archivo??
upload.php
.$uploadPath1 = dirname(__FILE__) . DIRECTORY_SEPARATOR;
obtiene la ruta del directorio del archivo actual (upload.php
) y le agrega un separador de directorio al final.$uploadPath2 = $uploadPath1 . basename($_FILES['file']['name']);
construye la ruta final de subida concatenando la ruta del directorio y el nombre del archivo subido.upload.php
está en la ruta /var/www/html/
, el archivo subido se guardará en /var/www/html/nombreDelArchivo
.$uploadPath1
para apuntar a la ruta de tu preferencia.$uploadPath2 = '../prueba/'.$uploadPath1 . basename($_FILES['file']['name']);En el código proporcionado, el archivo se está subiendo al mismo directorio donde se encuentra el archivoupload.php
.
La línea$uploadPath1 = dirname(__FILE__) . DIRECTORY_SEPARATOR;
obtiene la ruta del directorio del archivo actual (upload.php
) y le agrega un separador de directorio al final.
Luego,$uploadPath2 = $uploadPath1 . basename($_FILES['file']['name']);
construye la ruta final de subida concatenando la ruta del directorio y el nombre del archivo subido.
Por lo tanto, si tu archivoupload.php
está en la ruta/var/www/html/
, el archivo subido se guardará en/var/www/html/nombreDelArchivo
.
Si quieres que los archivos se suban a un directorio diferente, puedes modificar$uploadPath1
para apuntar a la ruta de tu preferencia.
No exactamente. La variable $uploadPath1 ya incluye la ruta completa a la carpeta del archivo actual. Si quieres subir el archivo a una carpeta llamada "prueba" en el directorio superior, puedes hacerlo de la siguiente forma:$uploadPath2 = '../prueba/'.$uploadPath1 . basename($_FILES['file']['name']);
seria asi para mi carpeta prueba no?
$uploadPath2 = '../prueba/' . basename($_FILES['file']['name']);
Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERRORNo exactamente. La variable $uploadPath1 ya incluye la ruta completa a la carpeta del archivo actual. Si quieres subir el archivo a una carpeta llamada "prueba" en el directorio superior, puedes hacerlo de la siguiente forma:
PHP:$uploadPath2 = '../prueba/' . basename($_FILES['file']['name']);
De esta manera, la ruta continuará desde un directorio más arriba (gracias a '../') hacia la carpeta 'prueba', y luego agregará el nombre del archivo subido. Por favor, asegúrate de que la carpeta 'prueba' existe y tiene los permisos adecuados.
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?