PHP - Subir y mostrar imagenes mysql apache y php

 
Vista:
Imágen de perfil de Escarabajo

Subir y mostrar imagenes mysql apache y php

Publicado por Escarabajo (2 intervenciones) el 13/06/2016 00:25:53
Buenas noches, lo primero pido disculpas si mi duda no se corresponde aqui, estoy muy agobiada ya que no consigo hacer funcionar el poder ver las imagenes.
Les comento: tengo un servidor web apache, donde tengo los ficheros de mi web, el caso es que puedo insertar imagenes y las inserta en la base de datos pero no las puedo mostrar me sale enlace error o nada. YA he buscado codigos y los he probado y nada. entonces dejare aqui mi codigo a ver si es que tengo algo mal que es lo mas probable o alguien me puede decir otro metodo para poder subir imagenes.. gracias.

Mi base de datos se llama motor, y la tabla de imagenes es:
1
2
3
4
5
6
7
8
CREATE TABLE IF NOT EXISTS `imagephp` (
  `id` smallint(6) NOT NULL AUTO_INCREMENT,
  `anchura` smallint(6) NOT NULL,
  `altura` smallint(6) NOT NULL,
  `tipo` char(15) NOT NULL,
  `imagen` mediumblob NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;


Este es mi fichero imagen_insertar.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<html>
<body>
<?php
include("conex.php"); // Incluir rl archivo de conexión con la base de datos 
# Conectar con MySQL
$mysqli=new mysqli("localhost","root","aguanta","motor");
if (mysqli_connect_errno()) {
    die("Error al conectar: ".mysqli_connect_error());
}
 
 
// Los posible valores que puedes obtener de la imagen son:
//echo "<BR>".$_FILES["userfile"]["name"];      //nombre del archivo
//echo "<BR>".$_FILES["userfile"]["type"];      //tipo
//echo "<BR>".$_FILES["userfile"]["tmp_name"];  //nombre del archivo de la imagen temporal
//echo "<BR>".$_FILES["userfile"]["size"];      //tamaño
 
# Comprobar que se haya subido el fichero
if (is_uploaded_file($_FILES["userfile"]["tmp_name"]))
{
# verificar el formato de la imagen
    if ($_FILES["userfile"]["type"]=="image/jpeg" || $_FILES["userfile"]["type"]=="image/pjpeg" || $_FILES["userfile"]["type"]=="image/gif" || $_FILES["userfile"]["type"]=="image/bmp" || $_FILES["userfile"]["type"]=="image/png")
    {
        # Coger la anchura y altura de la imagen
        $info=getimagesize($_FILES["userfile"]["tmp_name"]);
        //echo "<BR>".$info[0]; //anchura
        //echo "<BR>".$info[1]; //altura
        //echo "<BR>".$info[2]; //1-GIF, 2-JPG, 3-PNG
        //echo "<BR>".$info[3]; //cadena de texto para el tag <img
 
        # Escapa caracteres especiales
        $imagenEscapes=$mysqli->real_escape_string(file_get_contents($_FILES["userfile"]["tmp_name"]));
 
        # Agregar la imagen a la base de datos
        $sql="INSERT INTO imagephp (anchura,altura,tipo,imagen) VALUES (".$info[0].",".$info[1].",'".$_FILES["userfile"]["type"]."','".$imagenEscapes."')";
        $mysqli->query($sql);
 
        # Coger el identificador con el que se ha guardado
        $id=$mysqli->insert_id;
 
        # Mostrar la imagen agregada
        echo "<div class='mensaje'>Imagen agregada con el id ".$id."</div>";
    }else{
        echo "<div class='error'>Error: El formato de archivo tiene que ser JPG, GIF, BMP o PNG.</div>";
    }
}
?>
 
	<h2>Selecciona una imagen</h2>
	<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']?>" method="POST">
	<?#$_SERVER['PHP_SELF'] devuelve la ruta absoluta al script php en ejecución?>
	    <input name="userfile" type="file">
	    <input type="submit" value="Subir Imagen">
	</form>
 
	</body>
</html>


Este es el fichero blob.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
include("conex.php"); // Incluimos nuestro archivo de conexión con la base de datos
 
$link = mysql_connect("localhost", "root", "aguanta") or die ("ERROR AL CONECTAR");
$db_select = mysql_select_db("motor");
$sql= "SELECT imagen, tipo FROM imagephp";
$result= mysql_query($sql, $link);
$row= mysql_fetch_assoc($result);
 
 
  //ahora colocar las cabeceras segun el tipo de imagen
  header("Content-type: ".$row['tipo']."");
 
  echo ($row['imagen']);
?>


Este es mi fichero mostar.php

1
2
3
4
5
6
7
8
<?php
include("conex.php"); // Incluimos nuestro archivo de conexión con la base de datos 
?>
<html>
	<body>
<img src="blob.php" />
	</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Subir y mostrar imagenes mysql apache y php

Publicado por kip (877 intervenciones) el 13/06/2016 04:40:06
Hola, prueba de esta forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
include("conex.php"); // Incluimos nuestro archivo de conexión con la base de datos
 
mysql_connect("localhost", "root", "aguanta") or die ("ERROR AL CONECTAR");
mysql_select_db("motor");
$sql= "SELECT imagen, tipo FROM imagephp";
$result= mysql_query($sql);
$i=0;
 
while ($row= mysql_fetch_assoc($result)){
        $image[$i] = $row ['imagen'];
        $tipo[$i] = $row ['tipo'];
        $i++;
}
 
 
//ahora colocar las cabeceras segun el tipo de imagen
header("Content-type:".$tipo[0]);
 
echo $image[0];
 
?>

Si lo de arriba no te anda, podrias hacer la busqueda de la imagen con id en concreto que tu definas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
########## imagen_mostrar.php ##########
# debe recibir el id de la imagen a mostrar
# http://www.lawebdelprogramador.com
 
# Conectamos con MySQL
$mysqli=new mysqli("localhost","root","123456","imagen");
if (mysqli_connect_errno()) {
    die("Error al conectar: ".mysqli_connect_error());
}
 
# Buscamos la imagen a mostrar
$result=$mysqli->query("SELECT * FROM `imagephp` WHERE id=".$_GET["id"]);
$row=$result->fetch_array(MYSQLI_ASSOC);
 
# Mostramos la imagen
header("Content-type:".$row["tipo"]);
echo $row["imagen"];
?>

Del codigo fuente de este link http://www.lawebdelprogramador.com/codigo/PHP/70-Guardar-y-mostrar-una-imagen-de-una-base-de-datos-MySQL.html

Veo que estas armandolo desde aquel codigo del link que coloque, asi que seria mejor si te guias con el mismo.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Escarabajo

Subir y mostrar imagenes mysql apache y php

Publicado por Escarabajo (2 intervenciones) el 13/06/2016 09:37:37
Si de ese lo estaba siguiendo pero me hacía lo mismo.
Ahora probe con lo que me has puesto y me dice
The image "https://pg.mio/imagen_mostrar.php" cannot be displayed because it contains errors.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Subir y mostrar imagenes mysql apache y php

Publicado por kip (877 intervenciones) el 13/06/2016 15:37:14
Hola, intenta de esta forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$conex=mysqli_connect("localhost", "root", "aguanta","motor");
 
$sql= "SELECT tipo,imagen FROM imagephp";
$result= mysqli_query($conex,$sql);
$i=0;
 
if($result){
      while ($row= mysqli_fetch_assoc($result)){
             $image[$i] = $row ['imagen'];
             $tipo[$i] = $row ['tipo'];
             $i++;
      }
}
 
if ($tipo != ''){
//ahora colocar las cabeceras segun el tipo de imagen
header("Content-type: ".$tipo[0]);
 
echo $image[0];
}
?>

Asi mostraras solo una imagen, la primera para ser mas preciso, que tengas guardada en la base de datos, si quieres mostrar una imagen en particular podrias enviar el id desde el src del html de donde llamas a la imagen. Algo asi:
1
<img src="blob.php?id=2" />

Y harias una query colocando como parametro aquel id.

De todas formas, intenta como te deje arriba, si no te resulta, trata de verificar que los datos de la conexion esten bien, no incluyas ese conex.php, ya que en el mismo archivo estas creando la conexion, no es necesario conex.php en blob.php.

Nos cuentas si te funciona.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar