Foros del Web » Programando para Internet » PHP »

Error intentando subir imágenes de prueba a la base de datos del servidor local y web

Estas en el tema de Error intentando subir imágenes de prueba a la base de datos del servidor local y web en el foro de PHP en Foros del Web. Hola. Estoy haciendo pruebas para aprender a subir imágenes a un servidor web o local a una base en mysql. Primero creo este formulario: Código ...
  #1 (permalink)  
Antiguo 14/04/2012, 02:03
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Error intentando subir imágenes de prueba a la base de datos del servidor local y web

Hola.

Estoy haciendo pruebas para aprender a subir imágenes a un servidor web o local a una base en mysql.

Primero creo este formulario:

Código HTML:
<form action="recibe-imagenes-solo.php" method="post" name="f-insertar-tabla" enctype="multipart/form-data">
Imagen 1: <input type="file" name="imagen1" /><br />
Imagen 2: <input type="text" name="nombre"  /><br />
<input type="submit" name="enviar-tabla" value="Enviar" /><br /> 
Y luego en el archivo "recibe-imagenes-solo.php" tengo esto:

Código PHP:
<?php
session_start
();
require_once(
config.php");
conectar_base_de_datos();
$insertar ="
Insert into imagenes (imagen1nombrevalues ('$nombre_imagen1''".$_POST["nombre"]."')";
$imagen1=$_FILES["
imagen1"]["name"];
echo "
El nombre de la imagen1 es".$imagen1. "<br />";
$imagen1_tmp=$_FILES["
imagen1"]["tmp_name"];
echo "
El nombre o ruta temporal de la imagen1 es".$imagen1_tmp. "<br />";
$imagen1_tamano=$_FILES["
imagen1"]["size"];
echo "
El tamaño en bytes de la imagen1 es".$imagen1_tamano. "<br />";
$imagen1_tipo=$_FILES["
imagen1"]["type"];
echo "
El tipo de archivo de la imagen1 es".$imagen1_tipo. "<br />";
//Tamaño de la imagen en Kylobytes;
$kilobytes=$imagen1_tamano/1024;
//$maximo = 102400; //100Kb
echo "
El tamaño en kb es " .$kilobytes. "<br />";
if($imagen1_tipo == "
image/jpeg" or $imagen1_tipo == "image/gif" or $imagen1_tipo == "image/png")
    {
        echo "
La imagen es correcta<br />";
        //Preparo la extensión para el nombre de la imagen.
        switch($imagen1_tipo)
        {
            case'image/jpeg';
            $ext="
.jpg";
            break;
            case'image/gif';
            $ext="
.gif";
            break;
            case'image/png';
            $ext="
.png";
            break;
        }
        //Con esto le daría un nombre a la imagen enviada al servidor o con $_POST["
nombre_imagen"];
        $nombre_imagen1="
se pa ra";
        //En caso de que tenga espacios los sustituyo por un guión bajo
        $nombre_imagen1=str_replace(" ","
_", $nombre_imagen1);
        //Le añado la extensión 
        $nombre_imagen1=$nombre_imagen1.$ext;
        //echo $nombre_imagen;
        //La subo al archivo temporal de mi ordenador        
        copy($imagen1_tmp, "
$nombre_imagen1");        
        if($consulta=mysql_query($insertar))
        {
            echo "
Imagen subida";            
            echo '<img src="'.$nombre_imagen1.'" alt="" width="
374" height="300" />';            
        }
        else
        {
            echo "
Errorno se ha subido la imagen" .mysql_error();
        }
}
?>
Si lo miro en el servidor local con la url la imagen aparece pero luego en la base de datos solo carga el id_imagen y nombre, el campo imagen1 siempre aparece vacio.

También he probando incluyendo esta parte pero tampoco lo sube:

Código PHP:
if (is_uploaded_file($_FILES['imagen1']['tmp_name']))
        {
            echo 
"imagen subida";
        }
        else
        {
            echo 
"Error" .mysql_error();
        } 
¿Que me falta o estoy haciendo mal?

Saludos.
  #2 (permalink)  
Antiguo 14/04/2012, 02:19
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Error intentando subir imágenes de prueba a la base de datos del servidor

Nada más empezar tienes unos errores con las comillas, luego debes poner la sentencia sql por debajo de la última asignación que hagas a $nombre_imagen1 para que coja el valor que quieres darle

Código PHP:
require_once('config.php');//aquí tenías unas comillas mal
conectar_base_de_datos();
$insertar ="Insert into imagenes (imagen1, nombre) values ('".$nombre_imagen1."', '".$_POST["nombre"]."')"// $nombre_imagen1 debes tratarlo como un string para insertarlo en la BD 
espero haberme explicado,

saludos.
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 14/04/2012, 02:33
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Error intentando subir imágenes de prueba a la base de datos del servidor

Hola santris.

Las primeras comillas del config ha sido al copiar al foro que las he puesto mal, en realidad eso lo tenía bien.

El problema principal de insertar lo he puesto como decías (por debajo de la última asignación que hagas a $nombre_imagen) y ya coge el valor y sube perfectamente a la base.

Muchas gracias
  #4 (permalink)  
Antiguo 19/04/2012, 06:09
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Error intentando subir imágenes de prueba a la base de datos del servidor

Hola de nuevo.

He seguido haciendo otras pruebas y a la vez intentando mejorar el código anterior, en una parte me va bien pero en esta zona me da error:

Código HTML:
<form action="" method="post" name="f-insertar">
Imagen 1: <input type="file" name="imagen1"  /><br />
<input type="submit" name="enviar-kite" value="Enviar" /><br />
</form> 
Código PHP:
if(isset($_POST["enviar-kite"]))
{
        include (
"subir-imagenes-kites.php");
           
$insertar "Insert into kites (imagen1, id_usuario) values ('".$nombre_imagen1."','".$_SESSION["id_usuario"]."')";          

el archivo include de las imagenes ("subir-imagenes-kites.php") tiene esto:

Código PHP:
<?php 
/*--------------------------- Aquí preparo la segunda imagen, imagen1*/
//Nombre de la imagen
$imagen1=$_FILES["imagen1"]["name"];        
//Nombre Imagen temporal
$imagen1_tmp=$_FILES["imagen1"]["tmp_name"];        
//Tamaño
$imagen1_tamano=$_FILES["imagen1"]["size"];
$kilobytes=$imagen1_tamano/1024;//Tamaño de la imagen en Kylobytes;
$maximo 102400//100Kb
$max=1500000//(1.5Mb)        
//Tipo de archivo     
$imagen1_tipo=$_FILES["imagen1"]["type"];
//Compruebo el tipo de archivo
if($imagen1_tipo == "image/jpeg" or $imagen1_tipo == "image/gif" or $imagen1_tipo == "image/png"
{
    echo 
"La imagen es correcta<br />";
    
//Preparo la extensión para el nombre de la imagen.
    
switch($imagen1_tipo)
    {
        case
'image/jpeg';
        
$ext=".jpg";
        break;
        case
'image/gif';
        
$ext=".gif";
        break;
        case
'image/png';
        
$ext=".png";
        break;
    }
    
//Si es correcto compruebo el tamaño máximo
    
if($imagen1_tamano 1500000)
    { 
        echo 
"Tamaño permitido<br />";
        
//Entonces el tipo  de archivo y el tamaño se cumplen y se hace el envio
        
echo "Envio<br />";        
        
// Creamos la cadena aletoria
        
$str "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
        
$cad1 "";
        for(
$i=0;$i<12;$i++)
        {
            
$cad1 .= substr($str,rand(0,62),1);
        }
        
// Fin de la creacion de la cadena aletoria 
        
$nombre_imagen1=$cad1;
        
//En caso de que tenga espacios los sustituyo por un guión bajo
        
$nombre_imagen1=str_replace(" ","_"$nombre_imagen1);
        
//Le añado la extensión 
        
$nombre_imagen1=$nombre_imagen1.$ext;
        
//La subo al servidor
        
move_uploaded_file $_FILES 'imagen1' ][ 'tmp_name' ], $destino '/' .$nombre_imagen1);             
        
//copy($imagen1_tmp, $destino . '/' .$cad1.'.'.$ext);     
    
}
    else
    {
        echo 
"Error: El tamaño máximo es 1.5 Mb";
    }
}
else
{
    echo 
"Error: el tipo de archivo no es correcto<br />";
}  
?>
El erro que me da siempre es "Error: el tipo de archivo no es correcto".

Como decía en otra zona de la web lo tengo más amplio y parecido y me va perfectamente, aqui no se donde está el fallo
  #5 (permalink)  
Antiguo 19/04/2012, 08:35
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Error intentando subir imágenes de prueba a la base de datos del servidor

Cita:
Iniciado por kahlito Ver Mensaje

El erro que me da siempre es "Error: el tipo de archivo no es correcto".

Como decía en otra zona de la web lo tengo más amplio y parecido y me va perfectamente, aqui no se donde está el fallo
Puede ser el navegador, prueba estos en diferentes naveadores:

Código PHP:
echo $_FILES["imagen1"]["type"]; 
saludos,
__________________
Tu álbum de cromos online!!
  #6 (permalink)  
Antiguo 19/04/2012, 12:40
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Error intentando subir imágenes de prueba a la base de datos del servidor

Hola de nuevo santris.

He probado tu opción y al ver que en uno salía y en el de ahora no, y después de muchas vueltas me doy cuenta que me faltaba esto:

<form action="" method="post" name="f-insertar" enctype="multipart/form-data" >

lo tenía asi <form action="" method="post" name="f-insertar">

Fallo de principiante.

Muchas gracias de nuevo por tu ayuda.
  #7 (permalink)  
Antiguo 19/04/2012, 13:39
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Error intentando subir imágenes de prueba a la base de datos del servidor

Cita:
Iniciado por kahlito Ver Mensaje
Hola de nuevo santris.

He probado tu opción y al ver que en uno salía y en el de ahora no, y después de muchas vueltas me doy cuenta que me faltaba esto:

<form action="" method="post" name="f-insertar" enctype="multipart/form-data" >

lo tenía asi <form action="" method="post" name="f-insertar">

Fallo de principiante.

Muchas gracias de nuevo por tu ayuda.
De todas formas no estaría de más que en la validación de tipo de imagen pongas tambien esta opción
Código PHP:
or $imagen1_tipo == " image/x-png" 
Ya sabes!! por nuestro querido amigo IE.

saludos,
__________________
Tu álbum de cromos online!!
  #8 (permalink)  
Antiguo 19/04/2012, 16:13
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Error intentando subir imágenes de prueba a la base de datos del servidor

Gracias de nuevo, lo he cambiado también para Iexplorer que ya ni me fijaba en el


Etiquetas: formulario, imagenes, local, mysql, prueba, servidor, sql, tabla
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 13:55.