| |||
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 |
| |||
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:
seguiré trabajando y miraré como hacer si es posible anexar el valor a input hidden para poder subir los ficheros <form name="f"> <input type="file" name="d" style="display:none"> <a href="javascript:document.f.d.click()">Click</a> </form>
__________________ "SJ |
| |||
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> <br><span id="files"></span><br> </td></tr> <tr><td><a href="#" style="cursor:hand" onclick="nuevoUpload()">Agregar Archivo</a> </td></tr> </table> <input type="submit"> </form> </BODY> </HTML>
__________________ "SJ |
| |||
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> <br><span id="file1"></span><br> </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 |
| |||
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> <br><span id="files"></span><br> </td> </tr> </table> <a href="#" style="cursor:hand" onclick="document.f.submit()">Subir Archivos</a> </form> </BODY> </HTML>
__________________ "SJ |
| |||
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 |
| |||
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>
__________________ El que teme preguntar, se averguenza de aprender. Última edición por kez0; 31/01/2005 a las 09:40 |
| |||
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ía</a> Por todos los metodos que he probado me devuelve "acceso denegado" ¿se os ocurre algo? |
| |||
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? |