Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/06/2010, 08:01
Nanod10
 
Fecha de Ingreso: marzo-2006
Mensajes: 35
Antigüedad: 18 años, 8 meses
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...