PHP - subir imagen y guardarla en una tabla de sql

 
Vista:

subir imagen y guardarla en una tabla de sql

Publicado por ZeroX (35 intervenciones) el 08/01/2013 15:37:13
hola tengo esta gran duda ya que no se como puedo hacerle, lo que requiero es subir una imagen al servidor, bien esa parte ya la tengo, lo que me falta es como guardarla en una tabla de sql les paso mi codigo de subida de imagenes y solo requiero ayuda en el codigo para guardarla en la tabla, y este campo de que tipo tiene que ser? y que le pongo en tamaño graciass

formulario

1
2
3
4
5
6
7
8
9
10
11
12
<html>
<body>
<form action="upload3.php" method="post" enctype="multipart/form-data">
    <label for="file">Sube un archivo:</label>
    <input type="file" name="archivo" id="archivo" />
    <input type="submit" name="boton" value="Subir" />
</form>
<div class="resultado">
<-- Aqui ira el codigo PHP -->
</div>
</body>
</html>


codigo de subida

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
<?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/pjpeg")) &&
    ($_FILES["archivo"]["size"] > 20000)) {
 
    //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"],
          "images/" . $_FILES["archivo"]["name"]);
          echo "Archivo Subido ";
 
        }
      }
    } 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";
    }
}
?>


sale me seria de mucha utilidad si me podrian ayudar en esto gracias
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

subir imagen y guardarla en una tabla de sql

Publicado por Cristian (42 intervenciones) el 08/01/2013 16:04:42
Hola.
En tu codigo te falta definir mas cosas.
Aca te dejo un ejemplo:

NOTA: Para poder utilizar este código, necesitais disponer de una base de datos denominada 'imagen', con una tabla denominada 'imagephp'.
Se precisan dos archivos: imagen_agregar.php y imagen_mostrar.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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
########## imagen_agregar.php ##########
# 
 
/*
La base de datos utilizada para el ejemplo se llama imagenes

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=MyISAM  DEFAULT CHARSET=latin1;
*/
?>
<html>
<body>
<?php
# Conectamos con la base de datos
$link=mysql_connect("localhost","root","123456");
mysql_select_db("imagenes",$link);
//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
 
# Comprovamos que se haya subido un fichero
if (is_uploaded_file($_FILES["userfile"]["tmp_name"]))
{
	# Cogemos 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")
	{
		# Cogemos 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=mysql_real_escape_string(file_get_contents($_FILES["userfile"]["tmp_name"]));
 
		# Agregamos la imagen a la base de datos
		$result=mysql_query("INSERT INTO `imagephp` (anchura,altura,tipo,imagen) VALUES (".$info[0].",".$info[1].",'".$_FILES["userfile"]["type"]."','".$imagenEscapes."')",$link);
		# Cogemos el identificador con que se ha guardado
		$id=mysql_insert_id();
 
		# Mostramos la imagen agregada
		echo "Imagen agregada con el id ".$id."<BR>";
		echo "<img src='imagen_mostrar.php?id=".$id."' width='".$info[0]."' height='".$info[1]."'>";
	}else{
		$error="El formato de archivo tiene que ser JPG, GIF, BMP o PNG.";
	}
}else{
	$error="No ha seleccionado ninguna imagen...";
}
 
if ($error!="")
{
	echo "</center><P><font face='Arial' size=2 color='#ff0000'> Error: ".$error."</font><br>";
}
?>
 
<form ENCTYPE="multipart/form-data" action="imagen_agregar.php" method="POST">
	<INPUT NAME="userfile" TYPE="file">
	<p><input type="submit" value="Guardar Imagen">
</form>
</body>
</html>



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
########## imagen_mostrar.php ##########
# debe recibir el id de la imagen a mostrar
#
 
#Conectamos con la base de datos
$link=mysql_connect("localhost","root","123456");
mysql_select_db("imagenes",$link);
 
# Buscamos la imagen a mostrar
$result=mysql_query("SELECT * FROM `imagephp` WHERE id=".$_GET["id"],$link);
$row=mysql_fetch_array($result);
 
# Mostramos la imagen
header("Content-type:".$row["tipo"]);
echo $row["imagen"];
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

subir imagen y guardarla en una tabla de sql

Publicado por ZeroX (35 intervenciones) el 08/01/2013 19:11:32
gracias si me sirvio de mucho, y ahora como guardo la ruta de la imagen que subi?. puedo renombrar el archivo? y como hacerlo

gracias
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

subir imagen y guardarla en una tabla de sql

Publicado por Cristian (42 intervenciones) el 08/01/2013 23:35:18
Para que la ruta si ya tienes la imagen en la BD, puedes renombrar el archivo, creandote un update para renombrar los archivos.

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

subir imagen y guardarla en una tabla de sql

Publicado por Luis (1 intervención) el 03/05/2013 12:05:20
Hola! perdnad, pero el script a mi no me funciona, he seguido al pie de la letra contruyendo:
--> Base de datos: imagen
-->tabla: imagephp
--> archivo imagen_agregar.php
<html>
<body>
<?php
# Conectamos con la base de datos
$link=mysql_connect("localhost","usuario","conrasenya");
mysql_select_db("imagen",$link);
//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

# Comprovamos que se haya subido un fichero
if (is_uploaded_file($_FILES["userfile"]["tmp_name"]))
{
# Cogemos 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")
{
# Cogemos 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=mysql_real_escape_string(file_get_contents($_FILES["userfile"]["tmp_name"]));

# Agregamos la imagen a la base de datos
$result=mysql_query("INSERT INTO `imagephp` (anchura,altura,tipo,imagen) VALUES (".$info[0].",".$info[1].",'".$_FILES["userfile"]["type"]."','".$imagenEscapes."')",$link);
# Cogemos el identificador con que se ha guardado
$id=mysql_insert_id();

# Mostramos la imagen agregada
echo "Imagen agregada con el id ".$id."<BR>";
echo "<img src='imagen_mostrar.php?id=".$id."' width='".$info[0]."' height='".$info[1]."'>";
}else{
$error="El formato de archivo tiene que ser JPG, GIF, BMP o PNG.";
}
}else{
$error="No ha seleccionado ninguna imagen...";
}

if ($error!="")
{
echo "</center><P><font face='Arial' size=2 color='#ff0000'> Error: ".$error."</font><br>";
}
?>

<form ENCTYPE="multipart/form-data" action="imagen_mostrar.php" method="POST">
<INPUT NAME="userfile" TYPE="file">
<p><input type="submit" value="Guardar Imagen">
</form>
</body>
</html>
--> archivo imagen_mosrar.php
<?php
########## imagen_mostrar.php ##########
# deve recibir el id de la imagen a mostrar
# http://www.lawebdelprogramador.com

#Conectamos con la base de datos
$link=mysql_connect("localhost","usuario","contrasenya");
mysql_select_db("imagen",$link);

# Buscamos la imagen a mostrar
$result=mysql_query("SELECT * FROM `imagephp` WHERE id=".$_GET["id"],$link);
$row=mysql_fetch_array($result);

# Mostramos la imagen
header("Content-type:".$row["tipo"]);
echo $row["imagen"];
?>

En principio este script lo que hace es la primera parte, le doy a examinar, busco l image, la selecciono, le doy a subir, me pasa al archivo imgen_mostrar.hp, pero no me muestra nda, la hoa esta en blnco y la base de datos no tiene nada dentro.
porfavor alguna idea?? se lo agrdezco
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