Foros del Web » Programando para Internet » PHP »

Barra de progreso php para un script de upload

Estas en el tema de Barra de progreso php para un script de upload en el foro de PHP en Foros del Web. Hola, Quisiera saber como introdusco una barra que muestre el porcentaje de la subida del archivo al servidor con php. Aqui les muestro mi codigo ...
  #1 (permalink)  
Antiguo 20/08/2012, 11:43
Avatar de chinofilmshd  
Fecha de Ingreso: agosto-2012
Ubicación: Republica Dominicana
Mensajes: 47
Antigüedad: 11 años, 8 meses
Puntos: 0
Pregunta Barra de progreso php para un script de upload

Hola, Quisiera saber como introdusco una barra que muestre el porcentaje de la subida del archivo al servidor con php.
Aqui les muestro mi codigo que hace el proceso de enviar el archivo:

Código HTML:
<form action="subearchivo.php" enctype="multipart/form-data" method="post">
  <table class="file_slot" cellpadding="0" cellspacing="3" width="360">
    <tbody>
      <tr>
        <td width="1%" align="right"><b>Filename:</b></td>
        <td nowrap="nowrap">
        <input name="file_name" type="file" id="name"  /></td>
      </tr>
      <tr>
        <td align="right" nowrap="nowrap"><b>Uploaded by:</b></td>
        <td><label for="select"></label>
          <select name="upload_by" id="upload_by">
            <option value="Unrelease" selected="selected">Quien Eres?</option>
            <option value="DannyGraph">DannyGraph</option>
            <option value="Shelson">Shelson</option>
            <option value="ChinoFilms">Chino</option>
          </select></td>
      </tr>
      <tr>
        <td align="right" valign="top"><b>Description:</b></td>
        <td><input type="text" name="descripcion" id="descripcion" /></td>
      </tr>
      <tr>
        <td align="right" valign="top"><b>Fecha:</b></td>
        <td><input name="upload_date_file" type="text" id="upload_date_file" value="<?php echo date ( "d-m-Y H:i:s" , time () ); ?>" readonly="readonly" /></td>
      </tr>
      <tr>
        <td align="right"><b>Datos:</b></td>
        <td><input type="text" name="cadenatexto" id="cadenatexto" /></td>
      </tr>
      <tr>
        <td align="center" colspan="2">
        <input type="submit" name="button" id="button" value="Subir Archivo" /></div></td></tr></tbody></table></form> 

SubeArchivo.php esta se encarga de guardar los datos en la base de datos y sube el archivo al servidor:

Código PHP:
<? 
//tomo el valor de un elemento de tipo texto del formulario 
$cadenatexto $_POST["cadenatexto"]; 
echo 
"Escribió en el campo de texto: " $cadenatexto .  "<br><br>"

//datos del arhivo 
$nombre_archivo $HTTP_POST_FILES['file_name']['name']; 
$tipo_archivo $HTTP_POST_FILES['file_name']['type']; 
$tamano_archivo $HTTP_POST_FILES['file_name']['size'];
$destino './musica/'.$nombre_archivo
//compruebo si las características del archivo son las que deseo 
if (!((strpos($tipo_archivo"mp3") || strpos($tipo_archivo"MP3")) && ($tamano_archivo 900000000000000000000000000000000000000000000000000000))) { 
       echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>"
}else{ 
       if (
copy($_FILES['file_name']['tmp_name'],$destino)) { 
   echo 
"El archivo ha sido cargado correctamente.";
} else {
echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse.";
}

}


?> 

<?php 

    
    
// Si entramos es que todo se ha realizado correctamente


$d_host "localhost";        // MySQL server host 
$d_port "";            // MySQL server port 
$d_user "uservm";        // MySQL username 
$d_pass "123";        // MySQL password 
$db_name "dbvm"

//La conexión  
$coneccion mysql_connect($d_host,$d_user,$d_pass) or die ('No se puede conectar con la DB por que: ' mysql_error());  
mysql_select_db($db_name,$coneccion);  


# se recogen los datos del formulario 
$file_name $_POST['file_name']; 
$upload_by $_POST['upload_by']; 
$descripcion $_POST['descripcion']; 
$upload_date_file $_POST['upload_date_file']; 

//Insertando en la base de datos  
 
$sql="INSERT INTO  upload_files (file_name,upload_by,descripcion,file_size,upload_date_file) VALUES ('$nombre_archivo','$upload_by','$descripcion','$tamano_archivo','$upload_date_file')"



mysql_query($sql,$coneccion) or die (mysql_error()); 
 


?>
<?php 


$result 
mysql_query("SELECT * FROM upload_files WHERE upload_date_file = '$upload_date_file' ORDER BY id_file DESC LIMIT 1"$coneccion); 
if (
$row mysql_fetch_array($result)){
    
//Aqui le pongo una bariable al id del archivo
$idarchivo $row['id_file'];
$nombrefile $row['file_name'];
 while (
$row mysql_fetch_array($result));


} else {

echo 
"¡ La base de datos está vacia !";



?>

El Tema es que quisiera que muestre una Barra de porcentaje del proceso del upload, es lo unico. Gracias ! Espero que hayan entendido :)
  #2 (permalink)  
Antiguo 20/08/2012, 11:56
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Barra de progreso php para un script de upload

NO es posible.

Por la forma en que funciona el html+php, no es posible lo que pides. Sin embargo hay gestores hechos en flash que sí pueden hacer lo que quieres, creo que uno de ellos se llama fancyupload
  #3 (permalink)  
Antiguo 20/08/2012, 11:58
Avatar de chinofilmshd  
Fecha de Ingreso: agosto-2012
Ubicación: Republica Dominicana
Mensajes: 47
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Barra de progreso php para un script de upload

OKay Gracias por tu respuesta, Pero Quiero Saber Si Se Puede Funcionar con Jquery o javascript o con perl ?
  #4 (permalink)  
Antiguo 20/08/2012, 11:59
Avatar de chinofilmshd  
Fecha de Ingreso: agosto-2012
Ubicación: Republica Dominicana
Mensajes: 47
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Barra de progreso php para un script de upload

Ahh y el sistema que uso son php, Osea que el formulario esta en un archivo php, y hace la funcion en subirarchivo.php..
  #5 (permalink)  
Antiguo 20/08/2012, 12:00
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Barra de progreso php para un script de upload

Jquery es un framework de javascript. Javascript depende de php, por lo que la respuesta es la misma.

No estoy seguro que con perl se pueda, yo creo que sí, pero eso se sale del tema de php, por lo que te sugiero buscar en las otras secciones del foro.
  #6 (permalink)  
Antiguo 20/08/2012, 12:04
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Barra de progreso php para un script de upload

El problema es el siguiente: un formulario html (que no de php aunque esté escrito en un .php) toma la información que le des y la envía a otro lugar, y fin del asunto, no espera recibir respuesta. Php por su parte espera a recibir todo el contenido del formulario (archivos incluidos) para poder procesarlos y entonces responder.

En flash, las aplicaciones pueden partir el archivo, enviar cada pedazo a un php, éste a su vez va acumulando cada segmento y responde cada segmento recibido, por lo que el flash puede mostrar el progreso. Al final el php que recibe los trozos los une para dejarlos como el archivo original.
  #7 (permalink)  
Antiguo 20/08/2012, 12:13
Avatar de chinofilmshd  
Fecha de Ingreso: agosto-2012
Ubicación: Republica Dominicana
Mensajes: 47
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Barra de progreso php para un script de upload

Muchas Gracias Mi Hermano :) de verdad Se le Agradece por responder i dedicarme el tiempo :)
  #8 (permalink)  
Antiguo 21/08/2012, 10:15
Avatar de chinofilmshd  
Fecha de Ingreso: agosto-2012
Ubicación: Republica Dominicana
Mensajes: 47
Antigüedad: 11 años, 8 meses
Puntos: 0
Exclamación Sistema de upload php con barra de proceso sensillo en php !

Saludos, Eh Creado un Script de upload que sube los archivos MP3 que genera el link de descarga :

lo pueden chekar aqui vm-download.com, pero el problema es que quiero ponerle una barra de proceso que muestre la subida.

index.php

Código PHP:
<form action="subearchivo.php" enctype="multipart/form-data" method="post">
  <table class="file_slot" cellpadding="0" cellspacing="3" width="360">
    <tbody>
      <tr>
        <td width="1%" align="right"><b>Filename:</b></td>
        <td nowrap="nowrap">
        <input name="file_name" type="file" id="name"  /></td>
      </tr>
      <tr>
        <td align="right" nowrap="nowrap"><b>Uploaded by:</b></td>
        <td><label for="select"></label>
          <select name="upload_by" id="upload_by">
            <option value="Unrelease" selected="selected">Quien Eres?</option>
            <option value="DannyGraph">DannyGraph</option>
            <option value="Shelson">Shelson</option>
            <option value="ChinoFilms">Chino</option>
          </select></td>
      </tr>
      <tr>
        <td align="right" valign="top"><b>Description:</b></td>
        <td><input type="text" name="descripcion" id="descripcion" /></td>
      </tr>
      <tr>
        <td align="right" valign="top"><b>Fecha:</b></td>
        <td><input name="upload_date_file" type="text" id="upload_date_file" value="<?php echo date "d-m-Y H:i:s" time () ); ?>" readonly="readonly" /></td>
      </tr>
      <tr>
        <td align="right"><b>Datos:</b></td>
        <td><input type="text" name="cadenatexto" id="cadenatexto" /></td>
      </tr>
      <tr>
        <td align="center" colspan="2"><script type="text/javascript" src="./ver.php_files/swfobject.js"></script>
        <input type="submit" name="button" id="button" value="Subir Archivo" /></div></td></tr></tbody></table></form>

Aqui esta la funcion que guarda el archivo en la carpeta, y guarda la info de los campos en la base de datos :

subearchivo.php:

Código PHP:
<? 
//tomo el valor de un elemento de tipo texto del formulario 
$cadenatexto $_POST["cadenatexto"]; 
echo 
"Escribió en el campo de texto: " $cadenatexto .  "<br><br>"

//datos del arhivo 
$nombre_archivo $HTTP_POST_FILES['file_name']['name']; 
$tipo_archivo $HTTP_POST_FILES['file_name']['type']; 
$tamano_archivo $HTTP_POST_FILES['file_name']['size'];
$destino './musica/'.$nombre_archivo
//compruebo si las características del archivo son las que deseo 
if (!((strpos($tipo_archivo"mp3") || strpos($tipo_archivo"MP3")) && ($tamano_archivo 900000000000000000000000000000000000000000000000000000))) { 
       echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>"
}else{ 
       if (
copy($_FILES['file_name']['tmp_name'],$destino)) { 
   echo 
"El archivo ha sido cargado correctamente.";
} else {
echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse.";
}

}


?> 

<?php 

    
    
// Si entramos es que todo se ha realizado correctamente


$d_host "localhost";        // MySQL server host 
$d_port "";            // MySQL server port 
$d_user "uservm";        // MySQL username 
$d_pass "123";        // MySQL password 
$db_name "dbvm"

//La conexión  
$coneccion mysql_connect($d_host,$d_user,$d_pass) or die ('No se puede conectar con la DB por que: ' mysql_error());  
mysql_select_db($db_name,$coneccion);  


# se recogen los datos del formulario 
$file_name $_POST['file_name']; 
$upload_by $_POST['upload_by']; 
$descripcion $_POST['descripcion']; 
$upload_date_file $_POST['upload_date_file']; 

//Insertando en la base de datos  
 
$sql="INSERT INTO  upload_files (file_name,upload_by,descripcion,file_size,upload_date_file) VALUES ('$nombre_archivo','$upload_by','$descripcion','$tamano_archivo','$upload_date_file')"



mysql_query($sql,$coneccion) or die (mysql_error()); 
 


?>
<?php 


$result 
mysql_query("SELECT * FROM upload_files WHERE upload_date_file = '$upload_date_file' ORDER BY id_file DESC LIMIT 1"$coneccion); 
if (
$row mysql_fetch_array($result)){
    
//Aqui le pongo una bariable al id del archivo
$idarchivo $row['id_file'];
$nombrefile $row['file_name'];
 while (
$row mysql_fetch_array($result));


} else {

echo 
"¡ La base de datos está vacia !";



?>

<?php
echo "Se Ah Guardado En: " $destino .  "<br><br>"?>
Lo Unico que necesito es que en index.php muestre la barra de proceso y al finalizar muestre los links del archivo

NOTA: TODO ME FUNCIONA MUY BIEN EL ASUNTO ES QUE, QUIERO PONERLE LA BARRA DE UPLOAD QUE MUESTRA EL PROCESO DE POR DONDE VA LA SUBIDA

GRACIAS ESPERO SUS RESPUESTA !!
  #9 (permalink)  
Antiguo 21/08/2012, 10:29
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Sistema de upload php con barra de proceso sensillo en php !

Ya te he respondido con los detalles técnicos sobre la imposibilidad de colocar una barra que muestre el progreso real de una subida mediante la tecnología formulario html-php.

Si acaso, podrías poner un gif que muestre una barra de progreso, aunque no daría el avance real.
  #10 (permalink)  
Antiguo 21/08/2012, 10:30
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Sistema de upload php con barra de proceso sensillo en php !

javascript o ajax

con php lo unico que puedes hacer es poner una pagina intermedia que diga cargando tal tal y despues pasar a otra pagina y mostrar finalmente los datos pero claro esta que ese cargando no seria real
  #11 (permalink)  
Antiguo 21/08/2012, 10:34
Avatar de chinofilmshd  
Fecha de Ingreso: agosto-2012
Ubicación: Republica Dominicana
Mensajes: 47
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Sistema de upload php con barra de proceso sensillo en php !

Okai OCP001a, pero me gustaria saber una guia para pnerselo en ajax, gracias !

Porigual gracias Webankenovi !
  #12 (permalink)  
Antiguo 21/08/2012, 10:40
Avatar de chinofilmshd  
Fecha de Ingreso: agosto-2012
Ubicación: Republica Dominicana
Mensajes: 47
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Sistema de upload php con barra de proceso sensillo en php !

Webankenovi Y Como Redirecciono a la otra pagina al finalizar el upload
  #13 (permalink)  
Antiguo 21/08/2012, 10:41
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Sistema de upload php con barra de proceso sensillo en php !

con un header por ejemplo al final del script

header('location:mipagina.php');
  #14 (permalink)  
Antiguo 21/08/2012, 11:00
Avatar de chinofilmshd  
Fecha de Ingreso: agosto-2012
Ubicación: Republica Dominicana
Mensajes: 47
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Sistema de upload php con barra de proceso sensillo en php !

Okai Gracias webankenovi
  #15 (permalink)  
Antiguo 23/08/2012, 06:44
 
Fecha de Ingreso: noviembre-2011
Ubicación: Barcelona
Mensajes: 13
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Barra de progreso php para un script de upload

Siento llevar la contraria, pero si que se puede hacer teniendo instalado el módulo de apache APC y una versión de PHP superior a la 5.2. Yo estoy intentando implementarlo después de haber instalado el módulo.

Saludos.
  #16 (permalink)  
Antiguo 09/10/2014, 15:49
 
Fecha de Ingreso: abril-2009
Mensajes: 37
Antigüedad: 15 años
Puntos: 0
Respuesta: Barra de progreso php para un script de upload

Cómo instalaste el módulo APC ? Tienes razón, con esas características sí se puede hacer el Progress Bar para IE
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:39.