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 (imagen1, nombre) values ('$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 "Error, no 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.