Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Neibar en 3 Mayo 2012, 21:28 pm



Título: formulario / subir archivo / icono imagen html/php/javascript
Publicado por: Neibar en 3 Mayo 2012, 21:28 pm
igual lo que voy a preguntar es imposible, o bastante complicado.

Pero mi idea es la de tener este formulario, pasado a una imagen. Me explico.
En vez de que salga la barrita de examinar, tener una imagen que al hacer click sobre ella
se abra directamente el examinador (tal como haria en el formulario)

Código
  1.  
  2. <form action="upload.php" method="post" enctype="multipart/form-data">
  3. <input name="archivo" type="file" size="35" />
  4. <input name="enviar" type="submit" value="Subir" />
  5. <input name="action" type="hidden" value="upload" />    
  6. </form>
  7.  
  8.  

Supongo que pensareis que son ganas de comerse la cabeza teniendo ya el formulario que funciona, lo sé, pero quedaria "más bonito" por así decirlo.

Gracias de antemano!


Título: Re: formulario / subir archivo / icono imagen html/php/javascript
Publicado por: adastra en 4 Mayo 2012, 00:00 am
Sencillo.
Crea una hoja de estilos CSS que contenga la imagen y la defines en el botón.
Lee un poco sobre CSS en internet para que entiendas lo que te estoy diciendo (en el caso de que lo hayas comprendido ya)
Un Saludo.


Título: Re: formulario / subir archivo / icono imagen html/php/javascript
Publicado por: #!drvy en 4 Mayo 2012, 00:22 am
Hola,
@adastra, en realidad con el campo "file" no es tan sencillo como parece. El campo file no es otro botón tan normal y corriente como los demás y CSS apenas puede con el.

@Neibar, lo que se me ocurre es que uses javascript para imitar el evento. Tu pones la imagen o el boton, y luego haces con javascript que al clickear sobre ese boton, en realidad clickee sobre el campo file.

Ejemplo (con jquery):
Código
  1.   <style type="text/css">
  2.      #btnexaminar {display:none}
  3.   </style>
  4. </head>
  5. <form action="upload.php" method="post" enctype="multipart/form-data">
  6.  <input name="archivo" type="file" id="btnexaminar" class="oculto" size="35" />
  7.  <img src="imagen.png" alt="Boton Examinar" onClick="document.getElementById('btnexaminar').click(); />
  8.  <input name="archivo" type="file" size="35" />
  9.  <input name="enviar" type="submit" value="Subir" />
  10.  <input name="action" type="hidden" value="upload" />    
  11. </form>
  12. </body>
  13. </html>

Saludos


Título: Re: formulario / subir archivo / icono imagen html/php/javascript
Publicado por: adastra en 4 Mayo 2012, 00:52 am
En realidad no es tan complicado...
Por ejemplo, esto se puede hacer con primefaces:
http://www.primefaces.org/showcase-labs/ui/fileUploadSingle.jsf
Si os fijáis en el código HTML que ha generado primefaces para dicho componente, ha necesitado una etiqueta <span> y un estilo. En concreto en estas lineas:
Código:
<span class="ui-button-text">Choose</span><input type="file" id="j_idt15:j_idt16_input" name="j_idt15:j_idt16_input" />
Y como podéis ver, tiene un estilo completamente personalizado, lo mismo se puede extrapolar a escribir manual la página HTML+CSS. (Sin necesidad de implementar javascript).


Título: Re: formulario / subir archivo / icono imagen html/php/javascript
Publicado por: #!drvy en 4 Mayo 2012, 02:42 am
Con librerías es fácil... no te digo que no.. pero prueba hacer lo mismo con puro CSS y XHTML (no html5).

:)

Saludos


Título: Re: formulario / subir archivo / icono imagen html/php/javascript
Publicado por: Neibar en 4 Mayo 2012, 22:08 pm
Código
  1. <style>#btnexaminar {display:none}</style>
  2. <form action='upload.php' method='post' enctype='multipart/form-data'></td><tr>
  3.                                     <td><input name='archivo' type='file' id='btnexaminar' class='oculto' size='35' /></td><tr>
  4.                                     <td id="subir"><input name="enviar" id="boton-enviar" type="submit" value="Subir" /></td><tr>
  5.                                     <td><input name="action" type="hidden" value="upload" />
  6.  
  7.  

Al final esto era lo más fácil , gracias a todos igualmente :)