Foros del Web » Programando para Internet » PHP »

como puedo validar el peso de una imagen

Estas en el tema de como puedo validar el peso de una imagen en el foro de PHP en Foros del Web. Hola, por favor me pueden ayudar a validar el peso de una imagen antes de subirla la bd, tengo el siguiente codigo posterior al formulario. ...
  #1 (permalink)  
Antiguo 29/03/2009, 13:27
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 1 mes
Puntos: 0
Exclamación como puedo validar el peso de una imagen

Hola, por favor me pueden ayudar a validar el peso de una imagen antes de subirla la bd, tengo el siguiente codigo posterior al formulario.

Cita:
<?php
//Primero, arranca el bloque PHP y checkea si el archivo tiene nombre. Si no fue asi, te remite de nuevo al formulario de inserción:
// No se comprueba aqui si se ha subido correctamente.
if (empty($_FILES['archivo']['name'])){
header("location: formulario.php?proceso=falta_indicar_fichero"); //o como se llame el formulario ..
exit;
}

//establece una conexión con la base de datos.
$conexion = mysql_connect("localhost","luna_bd","pass") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("luna_tienda",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca.

// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;

// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));

// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
$binario_nombre=$_FILES['archivo']['name'];
$binario_peso=$_FILES['archivo']['size'];
$binario_tipo=$_FILES['archivo']['type'];

//insertamos los datos en la BD.
$consulta_insertar = "INSERT INTO archivos (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: listar_imagenes.php"); // si ha ido todo bien
exit;
?>
De antemano Gracias

Última edición por cara_luna; 29/03/2009 a las 14:43
  #2 (permalink)  
Antiguo 29/03/2009, 13:43
Avatar de dannce4life  
Fecha de Ingreso: junio-2008
Ubicación: localhost
Mensajes: 137
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Ayuda por favor! como puedo validar el peso de una imagen

Antes que nada, te digo que debes comprender tu propio codigo.
a simple vista eso que has puesto es ilegible.

lo ordené, y tambien respondí a tu pedido. espero te sirva.

Código PHP:
<?php 
if (empty($_FILES['archivo']['name']))

    
header("location: formulario.php?proceso=falta_indicar_fichero");
    exit; 
}

$conexion mysql_connect("localhost","juan_sury","jusualle") or die("No se pudo realizar la conexion con el servidor."); 
mysql_select_db("juan_tienda",$conexion) or die("No se puede seleccionar BD"); 

$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"rb"), filesize($binario_nombre_temporal))); 
$binario_nombre=$_FILES['archivo']['name']; 
$binario_peso=$_FILES['archivo']['size']; 
$binario_tipo=$_FILES['archivo']['type']; 

/* Hago efectiva la validación del peso */
if($binario_peso>1024000 or $binario_peso==0)
{
    echo 
htmlentities('Ha exedido el tamaño de 1 MB');
    exit();
}

$consulta_insertar "INSERT 
                        INTO archivos (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) 
                        VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')"

mysql_query($consulta_insertar) or die("No se pudo insertar los datos en la base de datos."); header("location: listar_imagenes.php"); 
?>
  #3 (permalink)  
Antiguo 29/03/2009, 14:28
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Ayuda por favor! como puedo validar el peso de una imagen

De verdad Muchas gracias dannce4life lo que pasa es que estoy aprendiendo solita y se me revuelven los codigos es por eso que no le quito las indicaciones, sabes lo probe y funciona perfecto solo que al mostrar imagen en listar_imagenes.php no se visualizan con firefox.
  #4 (permalink)  
Antiguo 29/03/2009, 14:37
Avatar de dannce4life  
Fecha de Ingreso: junio-2008
Ubicación: localhost
Mensajes: 137
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Ayuda por favor! como puedo validar el peso de una imagen

luna, comp sabrás, este codigo sirve para guardar la imagen en la base de datos en un campo blob. Si funciona bien... el problema está en el archivo "listar_imagenes.php"

Postea dicho codigo.

Un saludo.
  #5 (permalink)  
Antiguo 29/03/2009, 14:44
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Ayuda por favor! como puedo validar el peso de una imagen

Muchisimas gracias por tu atencion al responderme, este es el codigo

Cita:
<?php
mysql_connect("localhost","luna_bd","password") or die ("no se ha podido conectar a la BD");

mysql_select_db("luna_tienda") or die ("no se ha podido seleccionar la BD");

$sql = "SELECT id,archivo_nombre,archivo_tipo,archivo_peso FROM archivos";
$consulta = mysql_query($sql) or die ("No se pudo ejecutar la consulta");

While ($registro=mysql_fetch_assoc($consulta)){
echo "<img src=\"ver.php?id=".$registro['id']."\">";
echo "<br> Nombre archivo: ".$registro['archivo_nombre'];
echo "<br> Tipo archivo (MIME formato): ".$registro['archivo_tipo'];
echo "<br> Peso: ".$registro['archivo_peso']." bytes.<br><br>";
}

?>
  #6 (permalink)  
Antiguo 29/03/2009, 14:56
Avatar de dannce4life  
Fecha de Ingreso: junio-2008
Ubicación: localhost
Mensajes: 137
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Ayuda por favor! como puedo validar el peso de una imagen

luna, te comento:

Cita:
echo "<img src=\"ver.php?id=".$registro['id']."\">";
Ahí está el problema. "ver.php" es el archivo donde mediante el id de la imagen se obtiene la imagen.
"listar_imagenes.php" solamente muestra el contenido general.
Lo optimizé un poco

Código PHP:
<?
/* Variables de conexión */
$host         'localhost';
$usuario     'luna_bd';
$clave        'password';
$bd            'luna_tienda';

/* Parametros de conexión */
mysql_connect($host$usuario$clave) or die ("No se ha podido conectar a la BD");
mysql_select_db($bd) or die ("no se ha podido seleccionar la BD");
$consulta mysql_query('select * from archivos') or die ("No se pudo ejecutar la consulta<br />"mysql_error());

/* Obtención de datos */
while($registro mysql_fetch_assoc($consulta))
{
    echo 
'<img src="ver.php?id='.$registro['id'].' />';
    echo 
'<br /> Nombre archivo: '.$registro['archivo_nombre'];
    echo 
'<br /> Tipo archivo (MIME formato): '.$registro['archivo_tipo'];
    echo 
'<br /> Peso: '.$registro['archivo_peso'].' bytes.<br><br>';
}
?>
Postea el codigo de "ver.php"
  #7 (permalink)  
Antiguo 29/03/2009, 16:00
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Ayuda por favor! como puedo validar el peso de una imagen

Muchas Gracias nuevamente, sabes lo subi como me indicaste con el codigo ver.php y de igual manera no se ven las imagenes en mozilla, lo que hice fue incluir el codigo que agregaste al primer post, te vas a reir pero no funciona si le quito las leyendas// queda de la siguiente manera:

Cita:
<?php
//Primero, arranca el bloque PHP y checkea si el archivo tiene nombre. Si no fue asi, te remite de nuevo al formulario de inserción:
// No se comprueba aqui si se ha subido correctamente.
if (empty($_FILES['archivo']['name'])){
header("location: formulario.php?proceso=falta_indicar_fichero"); //o como se llame el formulario ..
exit;
}

//establece una conexión con la base de datos.
$conexion = mysql_connect("localhost","luna_bd","pass") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("luna_tienda",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos.

// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;

// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));

// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
$binario_nombre=$_FILES['archivo']['name'];
$binario_peso=$_FILES['archivo']['size'];
$binario_tipo=$_FILES['archivo']['type'];

/* Hago efectiva la validación del peso */
if($binario_peso>1024000 or $binario_peso==0)
{
echo htmlentities('Ha exedido el tamaño de 1 MB');
exit();
}

//insertamos los datos en la BD.
$consulta_insertar = "INSERT INTO archivos (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: ver.php"); // si ha ido todo bien
exit;
?>
De igual manera tus conocimientos me han servido muchisimo y te agradezco tu ayuda enormemente.
  #8 (permalink)  
Antiguo 29/03/2009, 16:25
Avatar de dannce4life  
Fecha de Ingreso: junio-2008
Ubicación: localhost
Mensajes: 137
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Ayuda por favor! como puedo validar el peso de una imagen

Luna, parece que no me has entendido jaja.
El archivos "guardar.php" (si lo tienes asi), asi como "listar_imagenes.php" ahora funcionan perfectamente.

El problema que tienes al no poder ver la imagenes en firefox, se encuentra en el archivo "ver.php"
Me explico:

Cuando este archivo recibe como parametro el id 1, la url del navegador es la siguiente

http://tu-dominio.com/ver.php?id=1

que quiere decir?. bueno. quiere decir que debe mostrar la imagen de la fila numero uno de la base de datos.

pero cuando la consulta a la base de datos es erronea, la imagen no se muestra. (puede ser la consulta o un codigo mas escrito)

supongo que tu codigo ver.php, se asemeja a esto:
Código PHP:
<? 
/* Variables de conexión */ 
$host         'localhost'
$usuario     'luna_bd'
$clave        'password'
$bd            'luna_tienda'

/* Parametros de conexión */ 
mysql_connect($host$usuario$clave) or die ("No se ha podido conectar a la BD"); 
mysql_select_db($bd) or die ("no se ha podido seleccionar la BD");

$resultados     mysql_query('select * from archivos where id='.$_GET['id']);
$tipo         = @mysql_result($resultados0"archivo_tipo") or die('Error en la obtencion del tipo de archivo');
$contenido     = @mysql_result($resultados0"archivo_binario") or die('Error en la obtencion del contenido de archivo');
$nombre     = @mysql_result($resultados0"archivo_nombre")or die('Error en la obtencion del nombre de archivo');

header("Content-Type: $tipo");
echo 
$contenido;
?>
  #9 (permalink)  
Antiguo 29/03/2009, 18:05
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Ayuda por favor! como puedo validar el peso de una imagen

jajajaja Tienes razón que pena obviamente se me nota que soy nueva en php

¡¡ya funcionó perfecto!

una ultima pregunta abusando de tu amabilidad como hago para validar el tamaño y formato, por ejemplo si solo quiero subir imagenes en jpg, png, gif (sin movimiento)

De antemano Gracias.
  #10 (permalink)  
Antiguo 29/03/2009, 18:23
Avatar de dannce4life  
Fecha de Ingreso: junio-2008
Ubicación: localhost
Mensajes: 137
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Ayuda por favor! como puedo validar el peso de una imagen

jajaja, bueno mira. este sería el codigo. (en guardar.php)

Código PHP:
<?php
if (empty($_FILES['archivo']['name'])) 
{  
    
header("location: formulario.php?proceso=falta_indicar_fichero"); 
    exit;  


$conexion mysql_connect("localhost","juan_sury","jusualle") or die("No se pudo realizar la conexion con el servidor.");  
mysql_select_db("juan_tienda",$conexion) or die("No se puede seleccionar BD");  

$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ; 
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"rb"), filesize($binario_nombre_temporal)));  
$binario_nombre=$_FILES['archivo']['name'];  
$binario_peso=$_FILES['archivo']['size'];  
$binario_tipo=$_FILES['archivo']['type'];  

// Hago efectiva la validación del peso  
if($binario_peso>1024000 or $binario_peso==0

    echo 
htmlentities('Ha exedido el tamaño de 1 MB'); 
    exit(); 

// Filtro los formatos 
if($binario_tipo != eregi('jpeg'$binario_tipo) || $binario_tipo != eregi('png'$binario_tipo) || $binario_tipo != eregi('gif'$binario_tipo)) 

    echo 
htmlentities('Debe subir imagenes de tipo: JPG, PNG o GIF.'); 
    exit(); 

$consulta_insertar "INSERT  
                        INTO archivos (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo)  
                        VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')"
;  
mysql_query($consulta_insertar) or die("No se pudo insertar los datos en la base de datos."); header("location: listar_imagenes.php");  
?>
  #11 (permalink)  
Antiguo 30/03/2009, 21:32
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Ayuda por favor! como puedo validar el peso de una imagen

Que crees dannce4life que no me funcionó al subir las imágenes de los formatos permitidos me marcaba el error: 'Debe subir imagenes de tipo: JPG, PNG o GIF.',

Ya lo soucioné aunque me gustaba mas como tu lo habias expuesto porque marcaba el error de acuerdo a lo solicitado.

Dejo el ejemplo como me quedó, solo para darle solución al tema.

Cita:
<?php
if (empty($_FILES['archivo']['name'])){
header("location: form.php?proceso=falta_indicar_fichero");
exit;
}
$filesize = $_FILES['archivo']['size'];
$filetype = $_FILES['archivo']['type'];
$type = substr($filetype, (strpos($filetype,"/"))+1);
$types=array("jpeg","jpg","png");

if ( $filesize > 0 && $filesize <= 250000 && in_array($type, $types) ) {

$conexion = mysql_connect("localhost","luna_bd","password") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("luna_tienda",$conexion) or die("No se puede seleccionar BD");

$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));
$binario_nombre=$_FILES['archivo']['name'];
$binario_peso=$_FILES['archivo']['size'];
$binario_tipo=$_FILES['archivo']['type'];

$consulta_insertar = "INSERT INTO archivos (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')" ;
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: listar_imagenes.php");}else{
echo htmlentities('Error al enviar la imagen:');
echo "<br>";
echo htmlentities('Solo puede subir imagenes de tipo: JPG, JPEG ó PNG');
echo "<br>";
echo htmlentities('Peso máximo permitido 250 KB.'); }

?>
<title>Insertar imagen</title>
</head>
<body>
<br>
<a href="form.php">Volver</a>
</body>
</html>"
Gracias por tu tiempo y todas tus atenciones al responderme, me ha servido de mucho.
  #12 (permalink)  
Antiguo 31/03/2009, 11:48
Avatar de dannce4life  
Fecha de Ingreso: junio-2008
Ubicación: localhost
Mensajes: 137
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Ayuda por favor! como puedo validar el peso de una imagen

muy bien. estoy a tu disposicion para cualquier otra consulta :)
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 14:05.