Foros del Web » Programando para Internet » PHP »

me ayudan con una barra de progreso simple

Estas en el tema de me ayudan con una barra de progreso simple en el foro de PHP en Foros del Web. Hola como estan? resulta que hace como un mes o quiza mas que busco esto, y no encuentro algo que se amolde a mis necesidades. ...
  #1 (permalink)  
Antiguo 01/06/2010, 08:01
 
Fecha de Ingreso: marzo-2006
Mensajes: 35
Antigüedad: 18 años, 1 mes
Puntos: 2
me ayudan con una barra de progreso simple

Hola como estan?

resulta que hace como un mes o quiza mas que busco esto, y no encuentro algo que se amolde a mis necesidades.

Entonces pense en..., entre todos hacer una simple barra de progreso que muestre el % o bytes subidos de un archivo subido desde un formulario html.

mi idea fue esta:

selecciono el archivo
le doy a click al submit del form
(mi problema) en ese momento mediante algun lenguaje conocer el nombre temporal del archivo.
Luego pasar ese nombre temporal del archivo (que es ese momento se esta subiendo) por get a un php que imprime el filesize() de ese archivo
mediante ajax consulto ese archivo cada x seg para conocer el tamaño actual del archivo que se esta subiendo.


El problema que intente conocer ese nombre y pasarlo a ese php antes que termine el upload del archivo y no pude, busque, flashee con php, intente con ajax, mi ultimo intento fue perl (pero no entiendo demaciado, nunca use).

Aca abajo mi intento.


- Form: html con el formulario.
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
<script type="text/javascript" src="ajax.js"></script>
</head>

<body>
<form enctype="multipart/form-data" name="nano" method="post" >
	<input type="file" name="archivo"  />
        <input type="text" name="kbs" value="" />
        <input type="submit" value="Enviar" onclick="obtener_nombre_tmp()" />
</form>
</body>
</html> 

- funciones ajax para monitorear el archivo.
Código HTML:
function nuevoAjax()
{ 
	/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
	var xmlhttp=false;
	try
	{
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			// Creacion del objet AJAX para IE
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(E)
		{
			if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
		}
	}
	return xmlhttp; 
}



function obtener_nombre_tmp()
{

}


function kb(URL_Archivo)
{
		var ajax=nuevoAjax();
		ajax.open("GET", "filesize.php?archivo="+URL_Archivo, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==4)
			{
				document.getElementById('kbs').value=ajax.responseText;
			} 
		}
		ajax.send(null);
}


- Averiguar tamaño actual de archivo temporal: un php, que pasandole una ruta del archivo, escriba su tamaño con la funcion filesize() para ser recuperado desde ajax.
Código PHP:
<?php
$archivo
=$_GET["archivo"];
echo (
filesize($archivo)/1024)." Kb ";
?>


obviamente faltan algunas cosas como cotrolar cada x tiempo el tamaño y etc...

pero el problema principal es que no puedo averiguar el tamaño actual porque no conosco el nombre temporal del archivo.

a ver... que se les ocurre, que lenguaje podemos usar para conocer ese nombre??

Un dato: no tengo un vps, entonces me restringen instalar extenciones de php como 'uploadprogress' debido a que hace symlink a /tmp y creo existe la posibilidad de vulnerar el servidor...

obviamente todos nosotros podremos usarlo, luego, es la idea, ya que di vueltas por toda la inet y no encontre algo como esto.

creo que es todo un reto, no?, o por lo menos para mi...
  #2 (permalink)  
Antiguo 01/06/2010, 10:43
Avatar de zeuslife  
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 533
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: me ayudan con una barra de progreso simple

Para nada, solo necesitas saber php, y un poquito de ajax. Simplemente es obtener el nombre del archivo que se ha recogido desde el form, y devolverlo a la pagina principal con ajax. No tiene más.
__________________
Neversyn Software e Ingeniería
  #3 (permalink)  
Antiguo 01/06/2010, 11:48
 
Fecha de Ingreso: marzo-2006
Mensajes: 35
Antigüedad: 18 años, 1 mes
Puntos: 2
Respuesta: me ayudan con una barra de progreso simple

hola zeuslife, si, es lo que necesito, sabes como obtener ese nombre?, no podes tirarme algunas lineas o algun dato, la verdad toy nuevito en ajax, pero no soy ningun bobo, si me das una ayuda quiza lo logre, necesito desarrollar esto para terminar una pagina web.

me podes tirar algunas lineas de codigo sobre tu idea?
  #4 (permalink)  
Antiguo 01/06/2010, 12:34
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: me ayudan con una barra de progreso simple

Subir un archivo por medio de AJAX http://www.webtoolkit.info/ajax-file-upload.html.

El problema es que no puedes obtener el tamaño del archivo, con Javascript puedes obtener el nombre, pero no el tamaño y con PHP solamente puedes obtener esa informacion solamente hasta que se finaliza la carga.

Una opcion seria con http://www.swfupload.org/ usando Javascript y Flash
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 01/06/2010, 12:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: me ayudan con una barra de progreso simple

Otra opción es usar alguna de las extensiones de PHP como APC Upload o PHP Upload que te permiten hacer el tracking del archivo cuando esta subiendo antes de que llegue a tu script PHP final.

Saludos.
  #6 (permalink)  
Antiguo 01/06/2010, 13:06
 
Fecha de Ingreso: marzo-2006
Mensajes: 35
Antigüedad: 18 años, 1 mes
Puntos: 2
Respuesta: me ayudan con una barra de progreso simple

gatorV

si para instalar esas extenciones es necesariocrear symlink a /tmp mi servidor no me lo permite (ya lo aclare en el post), en caso contrario seria una opcion, sabes si es necesario??

Triby

Estoy usando una clase para redimenzionar las imagenes, convertir y ubicar las imagenes en el servidor. Tu crees que haciendo el upload con ajax podre seguir usando esa clase??...


Yo pensaba
utilizar algun script perl para conocer el nombre temporal del archivo, tengo entendido que perl puede acceder a raw post data... podria haber una posibilidad? (unicamente necesito conocer el nombre temporal)
  #7 (permalink)  
Antiguo 01/06/2010, 13:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: me ayudan con una barra de progreso simple

Puedes ver el ejemplo aqui: http://www.ibm.com/developerworks/li...525/index.html No es necesario hacer un symlink, la extensión te brinda la información del upload.

Saludos.
  #8 (permalink)  
Antiguo 02/06/2010, 00:45
Avatar de zeuslife  
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 533
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: me ayudan con una barra de progreso simple

También tienes estas otras:

http://www.webdice.org/uber_uploader/
http://www.webappers.com/2007/07/02/...-progress-bar/
http://encodable.com/filechucker/

Saludos!
__________________
Neversyn Software e Ingeniería

Etiquetas: barra, progreso, simple
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 21:03.