entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Botón para subir imágenes en web con PHP

Hola de nuevo.
He estado buscando por internet un botón para subir imágenes a una carpeta que esta en el hosting. He encontrado lo siguiente:

    <form action="" method="post" enctype="multipart/form-data">
      <input type="file" name="archivo" id="archivo">
      <input type="submit" name="boton" value="Subir">
    </form>
<div class="resultado">
<?php
if(isset($_POST['boton'])){
    // Hacemos una condicion en la que solo permitiremos que se suban imagenes y que sean menores a 20 KB
    if ((($_FILES["archivo"]["type"] == "image/gif") ||
    ($_FILES["archivo"]["type"] == "image/jpeg") ||
    ($_FILES["archivo"]["type"] == "image/jpg") ||
    ($_FILES["archivo"]["type"] == "image/pjpeg")) &&
    ($_FILES["archivo"]["size"] < 2000000)) {

    //Si es que hubo un error en la subida, mostrarlo, de la variable $_FILES podemos extraer el valor de [error], que almacena un valor booleano (1 o 0).
      if ($_FILES["archivo"]["error"] > 0) {
        echo $_FILES["archivo"]["error"] . "";
      } else {
        // Si no hubo ningun error, hacemos otra condicion para asegurarnos que el archivo no sea repetido
        if (file_exists("archivos/" . $_FILES["archivo"]["name"])) {
          echo $_FILES["archivo"]["name"] . " ya existe. ";
        } else {
         // Si no es un archivo repetido y no hubo ningun error, procedemos a subir a la carpeta /archivos, seguido de eso mostramos la imagen subida
          move_uploaded_file($_FILES["archivo"]["tmp_name"],
          "archivos/" . $_FILES["archivo"]["name"]);
          echo "Archivo Subido ";
          echo '<img src="archivos/".$_FILES["archivo"]["name"]>';
        }
      }
    } else {
        // Si el usuario intenta subir algo que no es una imagen o una imagen que pesa mas de 20 KB mostramos este mensaje
        echo "Archivo no permitido";
    }
}
?>

El problema de esto es que queda muy feo,y yo necesito que el botón para examinar sea más grande y más vistoso, y por lo que he visto con el form no se puede dar estilos. He intentado hacerlo con el button normal, osea, quitar el form, y poner el button con el name="archivo" y el id="archivo", pero no sale.
Alguien sabe alguna manera de dar estilos al form, o hacerlo con mi button que si lo tengo como yo quiero?

2 Respuestas

3votos

canio Puntos900

Si lo que quieres es darle estilo a un botón de un formulario, lo puedes hacer fácilmente asignándole una clase y luego darle "style" como por ejemplo el siguiente caso.

.miButton {
    background: #ffa500;
    border: 1px solid #c9910a;
    border-bottom: 3px solid #c9910a;
    border-radius: 0.2em;
    color: #896008;
    margin-top: 0.5em;
    padding: 0.5em 4em;
}

<input type="submit" class="miButton" value="Buscar">

Puedes referenciarlo de más forma, como por ejemplo input[type="submit"], etc. Saludos!

0voto

Leonardo-Tadei comentado

Tal y como dice @canio, un botón es perfectamente decorable con CSS.

Le podés agregar una clase para la decoración o podés cear un estilo para todos los botones de submit del sitio.

0voto

nachito777sk comentado

el type="submit" precisamente no es el que me queda tan feo, me queda así:
enter image description here
Con el que tengo problemas es con el type="file", que me lo pone todo en una linea, y depende que medidas se me sale de la pantalla, y además no me lo centra, mientras que el de subir si me lo centra, estando los dos dentro del div para centrar........ no se si se puede editar más este input. Me queda así:
enter image description here
y yo quería algo así:
enter image description here
y debajo lo de "Ningún archivo seleccionado. Osea, que el botón de "Seleccionar archivo" fuese de del icono con la cámara.

0voto

canio comentado

Para lo que tu necesitas, creo que te conviene poner el input type=file en modo "hidden", de esta forma si lo tienes oculto en el formulario, podrías asociarle un evento onclick a una imagen, texto o lo que quieras y hacer la función del input, pero con la comodidad que tiene darle estilo a la imagen, div, etc. Te pongo un ejemplo para que se entienda mejor:

<pre><code>
HTML:
div id="archivo">Subir imagen</div>
input type="file" name="file">

CSS:

archivo {

display:none;

}

JS:
var wrapper = $('<div>').css({height:0,width:0,'overflow':'hidden'});
var fileInput = $(':archivo').wrap(wrapper);
fileInput.change(function(){
$this = $(this);
$('#archivo').text($this.val());
})
$('#archivo').click(function(){
fileInput.click();
}).show();

</code></pre>
Espero que se entienda, puse un div con un texto, pero podría ser cualquier otra cosa, saludos!!!

1voto

dairon Puntos17120

Mira este código que tiene un buen estilo y forma de subir imágen aunque esta hecho con codeigniter para el php Subir Foto es el que yo utilizo actualmente y no me ha dado problemas.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta