Foros del Web » Programando para Internet » PHP »

upload de gmail

Estas en el tema de upload de gmail en el foro de PHP en Foros del Web. Hola todos alguien sabe como hacer el upload de gmail. no tiene campo tipo file el cuadro para abrir archivo lo hace desde un enlace ...
  #1 (permalink)  
Antiguo 28/01/2005, 19:52
amj
 
Fecha de Ingreso: marzo-2002
Ubicación: Manizales
Mensajes: 152
Antigüedad: 22 años
Puntos: 1
upload de gmail

Hola todos alguien sabe como hacer el upload de gmail. no tiene campo tipo file el cuadro para abrir archivo lo hace desde un enlace y cuando uno le da aceptar el nombre del archivo aparece en un div o algo así, gracias
__________________
"SJ
  #2 (permalink)  
Antiguo 28/01/2005, 23:25
amj
 
Fecha de Ingreso: marzo-2002
Ubicación: Manizales
Mensajes: 152
Antigüedad: 22 años
Puntos: 1
Observar el código de gmail es complicadisimo, por eso recurro a los gurus de este sitio.
ya logre algo hacer aparecer el cuadro de diálogo abrir sin mostrar el input tipo file. este es el codigo por si les interesa.

Código:
<form name="f">
<input type="file" name="d" style="display:none">
<a href="javascript:document.f.d.click()">Click</a>
</form>
seguiré trabajando y miraré como hacer si es posible anexar el valor a input hidden para poder subir los ficheros
__________________
"SJ
  #3 (permalink)  
Antiguo 29/01/2005, 01:55
amj
 
Fecha de Ingreso: marzo-2002
Ubicación: Manizales
Mensajes: 152
Antigüedad: 22 años
Puntos: 1
Je je je. Lo logré este es el código para quien le sirva
Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Multiple upload</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="AMJ [email protected] http://www14.brinkster.com/alejomj2">
<META NAME="Keywords" CONTENT="upload multiple">
<META NAME="Description" CONTENT="formulario de upload similar al de google">

<script language="javascript">
function filer(id) {
	var ihidden = "<input type='hidden' name="+id+">";
	if (document.layers) {
		eval("document.layers."+id+".document.write(ihidden);");
		eval("document.layers."+id+".document.close();");
	} else if (document.all)
		eval(id+".innerHTML = ihidden;");
}
function filew(ifile) {
	var data = ifile.value.bold();
	var id = ifile.name;
	var remove = " <a href='#' style='cursor:hand' onclick=\"filer('"+id+"')\">Borrar</a>";
	if (document.layers) {
		eval("document.layers."+id+".document.write(data);");
		eval("document.layers."+id+".document.close();");
	} else if (document.all)
		eval(id+".innerHTML += data+remove+'<br>';");
}
function nuevoUpload() {
  var elem = document.f.length;
  var upload = "<span id='f"+elem+"'><input type='file' name='f"+elem+"' style='display:none;visibility:hidden;' onchange='filew(this)'></span>";
  if (document.layers) {
     document.layers.files.document.write(upload);
     document.layers.files.document.close();
  } else if (document.all)
		files.innerHTML += upload;
  eval("document.f.f"+elem+".click();");
}
</script>
</HEAD>

<BODY>
<h1>Múltiple upload</h1>
Este es un ejemplo de hacer un múltiple upload similar al de google para hacer attachments.<br>
Autor: <a href="http://www14.brinkster.com/alejomj2">AMJ [email protected]</a><br>
Fecha: 29/01/2005
<form name="f" enctype="multipart/form-data" method="post" action="uploadm.php">
<table border="1" width="100%">
<tr><td>&nbsp;<br><span id="files"></span><br>&nbsp;</td></tr>
<tr><td><a href="#" style="cursor:hand" onclick="nuevoUpload()">Agregar Archivo</a>
</td></tr>
</table>
<input type="submit">
</form>
</BODY>
</HTML>
__________________
"SJ
  #4 (permalink)  
Antiguo 29/01/2005, 15:59
amj
 
Fecha de Ingreso: marzo-2002
Ubicación: Manizales
Mensajes: 152
Antigüedad: 22 años
Puntos: 1
me sale el siguiente problema a la hora de hacer el submit:
Error: Acceso Denegado.
Código:
<?
/*
mupload.php
Programa para hacer múltiple upload con la técnica usada por google para los attachment
Autor: AMJ [email protected] http://www14.brinkster.com/alejomj2
Fecha: 29/01/2005
*/
/*for($i=0;$i<5;$i++)
  {
    if(!empty($userfile_name[$i]))
     if(copy ($userfile[$i],"$DOCUMENT_ROOT$path$userfile_name[$i]"))
        echo "Se copió el archivo $userfile_name[$i]<br>";
     else
        echo "El campo ".($i+1)." estaba vacío o no se pudo copiar";
    else
     echo "El campo ".($i+1)." estaba vacío o no se pudo copiar<br>";
  }
*/
$form = array_keys($_FILES);
$post = array_keys($_POST);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Multiple upload</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="AMJ [email protected] http://www14.brinkster.com/alejomj2">
<META NAME="Keywords" CONTENT="upload multiple">
<META NAME="Description" CONTENT="formulario de upload similar al de google">
<style>
.upload {
	border: 0px none;
	width: 0px;
}
.ioculto {
	visibility: hidden;
	display: none;
}
</style>

<script language="javascript">
function filer(id) {
	var ihidden = "<input type='hidden'>";
	if (document.layers) {
		eval("document.layers."+id+".document.write(ihidden);");
		eval("document.layers."+id+".document.close();");
		eval("document.layers."+id+"k.document.write();");
		eval("document.layers."+id+"k.document.close();");
	} else if (document.all) {
		eval(id+".innerHTML = ihidden;");
		eval(id+"k.innerHTML = '';");
	}
}
function filew(ifile) {
	var data = ifile.value;
	var id = ifile.name;
	var remove = " <a href='#' style='cursor:hand' onclick=\"filer('"+id+"')\">Borrar</a>";
	id += "k";
	if (document.layers) {
		eval("document.layers."+id+".document.write(data+remove+'<br>');");
		eval("document.layers."+id+".document.close();");
	} else if (document.all)
		eval(id+".innerHTML += data+remove+'<br>';");
}
function nuevoUpload() {
  var elem = document.f.length;
  var upload = "<span id='f"+elem+"'><input type='file' name='f"+elem+"' class='ioculto' onchange='filew(this)'></span><span id='f"+elem+"k'></span><span id='file"+(1*elem+1)+"'></span>";
  if (document.layers) {
     eval("document.layers.file"+elem+".document.write(upload);");
     eval("document.layers.files.document.close();");
  } else if (document.all)
		eval("file"+elem+".innerHTML += upload;");
  eval("document.f.f"+elem+".click();");
}
</script>
</HEAD>

<BODY>
<h1>Múltiple upload</h1>
Este es un ejemplo de hacer un múltiple upload similar al de google para hacer attachments.<br>
Autor: <a href="http://www14.brinkster.com/alejomj2">AMJ [email protected]</a><br>
Fecha: 29/01/2005
<form name="f" nctype="multipart/form-data" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<?
if(count($form)) {
	echo "Archivos enviados<br>";
	for($i=0;$i<count($form);$i++)
		if (is_uploaded_file($_FILES[$form[$i]]['tmp_name']))
			//copy($_FILES[$form[$i]]['tmp_name'], "./archivos/".$_FILES[$form[$i]]['name']);
			echo $_FILES[$form[$i]]['name']."<br>";
		else 
			echo "Possible file upload attack. Filename: $form[$i] <br>";
	//	echo "<b>".$_FILES["$form[$i]"]['type']."<b><br>";
	echo "<hr>";
}
if(count($post)) {
	echo "Datos enviados";
	for($i=0;$i<count($post);$i++)
		echo "<b>$post[$i]<b><br>";
}
?>
<table border="1" width="100%">
<tr><td>&nbsp;<br><span id="file1"></span><br>&nbsp;</td></tr>
<tr><td><a href="#" style="cursor:hand" onclick="nuevoUpload()">Agregar Archivo</a>
</td></tr>
</table>
<a href="#" style="cursor:hand" onclick="document.f.submit()">Subir Archivos</a>
</form>

</BODY>
</HTML>
__________________
"SJ
  #5 (permalink)  
Antiguo 29/01/2005, 17:44
amj
 
Fecha de Ingreso: marzo-2002
Ubicación: Manizales
Mensajes: 152
Antigüedad: 22 años
Puntos: 1
lo cambié por este y resuelto el problema, pero me queda la duda de como hacerlo tal cual como en gmail, sí alguien sabe se lo agradecería.
Código:
<?
/*
mupload.php
Programa para hacer múltiple upload con la técnica usada por google para los attachment
Autor: AMJ [email protected] http://www14.brinkster.com/alejomj2
Fecha: 29/01/2005
*/
/*for($i=0;$i<5;$i++)
  {
    if(!empty($userfile_name[$i]))
     if(copy ($userfile[$i],"$DOCUMENT_ROOT$path$userfile_name[$i]"))
        echo "Se copió el archivo $userfile_name[$i]<br>";
     else
        echo "El campo ".($i+1)." estaba vacío o no se pudo copiar";
    else
     echo "El campo ".($i+1)." estaba vacío o no se pudo copiar<br>";
  }
*/
$form = array_keys($_FILES);
$post = array_keys($_POST);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Multiple upload</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="AMJ [email protected] http://www14.brinkster.com/alejomj2">
<META NAME="Keywords" CONTENT="upload multiple">
<META NAME="Description" CONTENT="formulario de upload similar al de google">
<style>
.upload {
	border: 0px none;
	width: 0px;
	background: white;
	cursor: hand;
	color: blue;
	text-decoration:underline;
}
.ioculto {
	visibility: hidden;
	display: none;
}
</style>

<script language="javascript">
function filer(id) {
	var ihidden = "<input type='hidden'>";
	if (document.layers) {
		eval("document.layers."+id+".document.write(ihidden);");
		eval("document.layers."+id+".document.close();");
		eval("document.layers."+id+"k.document.write();");
		eval("document.layers."+id+"k.document.close();");
	} else if (document.all) {
		eval(id+".innerHTML = ihidden;");
		eval(id+"k.innerHTML = '';");
	}
}
function filew(ifile,i) {
	ifile.className = "ioculto";
	var upload = "<span id='f"+i+"'><input type='file' name='f"+i+"' class='upload' onchange='filew(this,"+(1*i+1)+")'></span><span id='file"+(1*i+1)+"'></span>";
	var id = ifile.name;
	var data = "<span id='"+id+"k'>"+ifile.value+" <a href='#' style='cursor:hand' onclick=\"filer('"+id+"')\">Borrar</a><br></span>";
	if (document.layers) {
		document.layers.files.document.write(data);
		document.layers.files.document.close();
		eval("document.layers.file"+i+".document.write(upload);");
		eval("document.layers.files.document.close();");
	} else if (document.all) {
		files.innerHTML += data;
		eval("file"+i+".innerHTML += upload;");
	}
}
</script>
</HEAD>

<BODY>
<h1>Múltiple upload</h1>
Este es un ejemplo de hacer un múltiple upload similar al de google para hacer attachments.<br>
Autor: <a href="http://www14.brinkster.com/alejomj2">AMJ [email protected]</a><br>
Fecha: 29/01/2005
<form name="f" enctype="multipart/form-data" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="200000">
<?
if(count($form)) {
	echo "Archivos enviados<br>";
	for($i=0;$i<count($form);$i++)
		if (is_uploaded_file($_FILES[$form[$i]]['tmp_name'])) {
			copy($_FILES[$form[$i]]['tmp_name'], "./archivos/".$_FILES[$form[$i]]['name']);
			echo $_FILES[$form[$i]]['name']."<br>";
		}
	echo "<hr>";
}
if(count($post)) {
	echo "Datos enviados<br>";
	for($i=0;$i<count($post);$i++)
		echo "<b>$post[$i]<b><br>";
}
?>
<table border="1" width="100%">
<tr><td valign="top" width="25%">Agregar Archivo <span id="file1"><span id="f1"><input type="file" class="upload" name="f1" onchange="filew(this,2)"></span></span><span id="file2"></span>
</td><td>&nbsp;<br><span id="files"></span><br>&nbsp;</td>
</tr>
</table>
<a href="#" style="cursor:hand" onclick="document.f.submit()">Subir Archivos</a>
</form>

</BODY>
</HTML>
__________________
"SJ
  #6 (permalink)  
Antiguo 29/01/2005, 21:37
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
me parece muy interesante, aunque no le puedo prestar mucha antencion ahora, talves puedas ponerlo en las FAQS, puede ser de ayuda
  #7 (permalink)  
Antiguo 30/01/2005, 00:39
amj
 
Fecha de Ingreso: marzo-2002
Ubicación: Manizales
Mensajes: 152
Antigüedad: 22 años
Puntos: 1
la verdad que sí me gustaría que alguien me despejara la duda como lo hace gmail pues como lo hice en el mensaje 4 de esta discusión me saca error de acceso denegado, y aun trato de mirar como lo hace gmail pero está barbaro te mandan a los códigos de los códigos. pero bueno solo es por curiosidad ya que como lo logré en la última entrega pude lograr lo de envío de "N" uploads totalmente genérico.

De todas formas insisto alguien que me despeje la duda de como lo hace gmail!!
__________________
"SJ
  #8 (permalink)  
Antiguo 31/01/2005, 09:39
 
Fecha de Ingreso: enero-2004
Mensajes: 431
Antigüedad: 20 años, 3 meses
Puntos: 6
Código HTML:
<form name="form">
<input type="file" name="file1" style="display:none" onchange="javascript:document.write(document.form.file1.value);">
<a href="javascript:document.form.file1.click()">Click</a>
<input type="file" name="file2" style="display:none" onchange="javascript:document.write(document.form.file2.value);">
<a href="javascript:document.form.file2.click()">Click</a>

</form> 
La verdad no lo he probado pero podria servir
__________________
El que teme preguntar, se averguenza de aprender.

Última edición por kez0; 31/01/2005 a las 09:40
  #9 (permalink)  
Antiguo 23/12/2007, 20:36
 
Fecha de Ingreso: enero-2006
Mensajes: 29
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: upload de gmail

Hola chicos, me ha parecido muy interesante este post, y lo he utilizado para solucionar una cosa pendiente. Aunque ahora se me plantea otro problema. Os cuento.


Código HTML:
<input type="file" name="foto" id="foto" size="35" maxlength="255" onchange="document.form_mantenimiento_datos.submit();"/>

<a href="javascript:document.getElementById('foto').click()" title="Buscar">Buscar una fotograf&iacute;a</a> 
Tengo esto. Lo que pretendo hacer es que el campo file esté oculto y activar la seleccion de archivos desde un link, y acto seguido como evento onchange del input, recargar la página para que se actualice la foto seleccionada.

Por todos los metodos que he probado me devuelve "acceso denegado"

¿se os ocurre algo?
  #10 (permalink)  
Antiguo 23/12/2007, 20:45
 
Fecha de Ingreso: enero-2004
Mensajes: 431
Antigüedad: 20 años, 3 meses
Puntos: 6
Pregunta Re: upload de gmail

Haber si te entiendo quieres algo como esto?

http://www.air4web.com/files/upload/

Por cierto habras notado que ese codigo del campo file stilo gmail solo sirve en IE?
  #11 (permalink)  
Antiguo 23/12/2007, 21:21
 
Fecha de Ingreso: enero-2006
Mensajes: 29
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: upload de gmail

Sip, me acabo de dar cuenta macho, no va con mozilla ni opera.

ufff ¿que hacemos con eso?
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 18:00.