Foros del Web » Programando para Internet » PHP »

Problema al subir imagen

Estas en el tema de Problema al subir imagen en el foro de PHP en Foros del Web. Hola a todos, tengo un problema al subir una imagen y es que no las muestra, eso si, estoy probando en mi propio pc (localhost). ...
  #1 (permalink)  
Antiguo 30/03/2008, 20:52
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 2 meses
Puntos: 0
Problema al subir imagen

Hola a todos, tengo un problema al subir una imagen y es que no las muestra, eso si, estoy probando en mi propio pc (localhost).

Utilizando el dreamweaver para generar la consulta, me aparece algo asi (para todas las imagenes):

GIF89a2�X���������������������߻��1�������1��)�̽�� ){�!���k�!v�j�����������h�Z������W�o���
��s��U����M�w��F�z{�du�Vp�eq�Yn�fx`bt~=�Xh�Yh� G`�Ua
�H`�L

y haciendolo a mano me aparace

No se puede mostrar la imagen “http://localhost/fotos/imagen.php?mostrar=4” porque contiene errores.

Será el codigo?, sera el cotejamiento de la base de datos? he probado todos los blob.

Este es el codigo para subir la imagen

Código HTML:
<?php require_once('Connections/seleccion.php');
mysql_select_db($database_seleccion, $seleccion);

if (isset($_POST['enviar'])) {
$tipos = array("image/gif","image/jpeg","image/bmp","image/pjpeg");

$maximo = 102400; //100Kb

if (is_uploaded_file($_FILES['imagen']['tmp_name'])) { // Se ha subido?

if (in_array($_FILES['imagen']['type'],$tipos) && $_FILES['imagen']['size'] <= $maximo) { // Es correcto?

$fp = fopen($_FILES['imagen']['tmp_name'], 'r'); //mostrar imagen

$imagen = fread($fp, filesize($_FILES['imagen']['tmp_name'])); //contenido de la imagen

$imagen = addslashes($imagen);

fclose($fp); //cierra la imagen

if(!get_magic_quotes_gpc())

$nombre = addslashes($_FILES['imagen']['name']); //arregla el Nombre

else $nombre = $_FILES['imagen']['name'];

$query = "INSERT INTO `imagenes` (imagen,nombre,tipo,descripcion,fecha,ip) VALUES ";

$query.= "('".$imagen."','".$nombre."','".$_FILES['imagen']['type']."','";	

$query.= mysql_real_escape_string($_POST['descripcion'])."','";
	
$query.= date("d/m/y",time())."','".$_SERVER['REMOTE_ADDR']."')";

if (mysql_query($query)) echo '<img src="visor.php?mostrar='.mysql_insert_id().'">';

else echo mysql_error();
	
} else echo "El formato del archivo no es correcto o es mayor de 100Kb";	

} else echo "La imagen no ha sido subida";
}
?> 
y para mostrar la imagen es este:
Código HTML:
<?PHP
require_once('Connections/seleccion.php');
mysql_select_db($database_seleccion, $seleccion);
if (is_numeric($_GET['mostrar'])) {
// Conexion a la Base de Datos
$query = mysql_query("SELECT * FROM `imagenes` WHERE id = '".$_GET['mostrar']."'") or exit();
if (!mysql_num_rows($query)) exit(header("HTTP/1.0 404 Not Found"));
$datos = mysql_fetch_array($query);
header("Content-Type: ".$datos['tipo']);
echo $datos['imagen'];
//Desconexion
} else header("HTTP/1.0 404 Not Found");
?> 
Alguien sabe que puede pasar?
  #2 (permalink)  
Antiguo 31/03/2008, 13:29
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Problema al subir imagen

Vale decir que esto sucede con todas las imagenes que cargo en la base de datos.

He probado otros metodos que he visto aqui, pero ese ha sido el unico que me carga la imagen, los oros metodos "hacien el proceso", pero al revizar la base de datos no pasa nada
  #3 (permalink)  
Antiguo 31/03/2008, 13:58
 
Fecha de Ingreso: enero-2008
Mensajes: 381
Antigüedad: 16 años, 3 meses
Puntos: 19
Re: Problema al subir imagen

para una imagen mejor que uses mysql_real_scape_string antes que addslashes

para determinar el tipo de imagen mejor que uses:
Código PHP:
list($width$height$type$attr) = getimagesize($_FILES['imagen']['tmp_name']);
//de aqui tienes que guardar $type en la bd, y aunque no es necesario tambien es bueno guardar attr, que son los atributos de la imagen en html
//un ejemplo de $attr: <img src="ruta" $attr>, attr seria por ej 'width=250 height=300' 
Y despues para mostrar la imagen:
Código PHP:
//Las variables utilizadas deben ser rescatadas anteriormente de la BD
header("content-type: ".image_type_to_mime_type($type));
echo 
stripslashes($img); 
PD: Te recomiendo que mejor uses un script para subir la imagen al disco duro en vez de a la BD (yo he probado los dos y es mucho mejor al disco duro) 1º por que la BD siempre hay menos espacio 2º porque este sistema es mas complicado y da mas error 3º vas ha tener problemas si intentas restaurar un backup de la base de datos, pero lo unico que cambia es el script, no el formulario

EDIT: Creo que falla por que no has echo el stripslashes
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 21:25.