Foros del Web » Programando para Internet » PHP »

Bajar peso archivo

Estas en el tema de Bajar peso archivo en el foro de PHP en Foros del Web. Hola a todos, Estoy creando una web de anuncios clasificados (Pisos de alquiler). He estado creando un formulario php para que que los usuarios puedan ...
  #1 (permalink)  
Antiguo 20/06/2009, 09:03
 
Fecha de Ingreso: mayo-2009
Mensajes: 83
Antigüedad: 14 años, 11 meses
Puntos: 1
Exclamación Bajar peso archivo

Hola a todos,

Estoy creando una web de anuncios clasificados (Pisos de alquiler). He estado creando un formulario php para que que los usuarios puedan insertar sus propios anuncios y el problema me llega a la hora de insertar las imagenes.
He creado el php para que me inserte la imagen dentro de una tabla en la base de datos y para que sea más ágil el proceso lo he hecho con un campo blob dentro de la tabla y por lo tanto el archivo no debe pesar más de 67 kb.. Ahora mi problema es que la mayoria de los anuncios me los enviarán con un peso superior a este. He creado un código para que no puedan insertar archivos más pesados de 67 kb pero esto no es lo que busco, lo que quiero es que los usuarios inserten archivos de por ejemplo 400 kb y antes de inertarlo en la base de datos me las reduzca a 67 kb como mucho...
Alguien sabe como lo puedo hacer?

Dejo mi código actual que no permite subir archivos con un peso superior a 67 kb y espero que se les ocurra algo! jeje

Código PHP:
<?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;

 
$filesize $_FILES['archivo']['size'];
$filetype $_FILES['archivo']['type'];
//verificamos el tipo de archivo y definimos los que se pueden subir
$type substr($filetype, (strpos($filetype,"/"))+1);
$types=array("jpeg","gif");
//marcamos el maximo tamaño del archivo a subir 
 
if ( $filesize && $filesize <= 67000 && in_array($type$types) ) {


 
//establece una conexión con la base de datos.
$conexion mysql_connect("localhost","","") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("",$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"r"), 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'];
$tipovivienda=$_POST['tipovivienda'];
$ciudad=$_POST['ciudad'];
$poblacion=$_POST['poblacion'];
$email=$_POST['email'];
$telefono=$_POST['telefono'];
$precio=$_POST['precio'];
$habitaciones=$_POST['habitaciones'];
$banos=$_POST['banos'];
$m2=$_POST['m2'];
$cliente=$_POST['cliente'];
$estado=$_POST['estado'];
$opcion=$_POST['opcion'];
$descripcion=$_POST['descripcion'];
//insertamos los datos en la BD.
$consulta_insertar "INSERT INTO propiedades (referencia, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo, idvivienda, idciudad, poblacion, email, telefono, precio, habitaciones, banos, m2, cliente, estado, opcion, descripcion) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo', '$tipovivienda', '$ciudad', '$poblacion', '$email', '$telefono', '$precio', '$habitaciones', '$banos', '$m2', '$cliente', '$estado', '$opcion', '$descripcion')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: listar_imagenes.php"); }else{ header("location: formulario.php?proceso=el archivo no puede ser mayor de 67 kb o es un formato no compatible"); }//o como se llame el formulario ..
exit;
?>
Gracias por su tiempo y un saludo!
  #2 (permalink)  
Antiguo 20/06/2009, 09:09
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Bajar peso archivo

Creo que la librería phpGD puede ayudarte. Nunca lo he usado así que no podría decirte con certeza como hacerlo. Lo que si puedo decirte, es que no es recomendable guardar imágenes en la bd, mejor que lo subas a una carpeta y en la bd guardas la dirección de la imagen. Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 20/06/2009, 09:10
Avatar de kike00  
Fecha de Ingreso: febrero-2005
Ubicación: El Salvador
Mensajes: 180
Antigüedad: 19 años, 2 meses
Puntos: 7
Respuesta: Bajar peso archivo

El problema es que no debes de guardar la imagen en la BD!!
tienes que guardar la URL de la imagen o el nombre de la imagen

Lo que tienes que hacer es subir la imagen al servidor (la guardas en cualquier carpeta), generas un nombre aleatorio (para evitar que no se sobreescriba la imagen. Puedes hacerlo uniendole al nombre real de la image la fecha y la hora actual incluyendo los segundos :] ).

luego en la BD guardas ese nombre de la imagen....

ya despues puedes tomar ese nombre y mostrar la imagen (porque ya sabes donde se guardo).... pero no es buena idea guardar en una BD toda una imagen o.O (en algunos casos talvez... pero no se me ocurre ninguno ahorita xD)
  #4 (permalink)  
Antiguo 20/06/2009, 09:15
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Bajar peso archivo

Tienes que pasar la imagen al servidor primero y luego la reduces. Pero no te recomiendo que lo coloques dentro del a base de datos. Sino que crees un archivo que tengas las fotos. Bueno para que veas lo que te digo de redimensionarlas mira este comentario del foro

http://www.forosdelweb.com/f18/reesc...-luego-702844/

Luego vas a tener que ver como implementarlo con lo de añadirlo a la base de datos
  #5 (permalink)  
Antiguo 20/06/2009, 09:23
 
Fecha de Ingreso: mayo-2009
Mensajes: 83
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Bajar peso archivo

Pero igualmente subiendola al servidor necesito redimensionarla, porque con unos cuantos usuarios que inserten imagenes de nose...500kb en dos dias con un tráfico grande me llenan igualmente el servidor...
Mi idea de ponerlas en el servidor fue porque es una página de anuncios y así cada vez que borren un anuncio borrarán también la imagen...
  #6 (permalink)  
Antiguo 20/06/2009, 09:27
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Bajar peso archivo

Pero puedes borrar la imagen tambien colocandola en el servidor y el link en la base de datos. Pero bueno como te indique usa ese ejemplo de redimensionar y verifica como puedes hacer para insertarla en la base de datos como tu haces.
  #7 (permalink)  
Antiguo 20/06/2009, 09:29
 
Fecha de Ingreso: mayo-2009
Mensajes: 83
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Bajar peso archivo

Gracias, me pondré con ello!
  #8 (permalink)  
Antiguo 20/06/2009, 09:34
Avatar de kike00  
Fecha de Ingreso: febrero-2005
Ubicación: El Salvador
Mensajes: 180
Antigüedad: 19 años, 2 meses
Puntos: 7
Respuesta: Bajar peso archivo

Apues si redimensionando la imagen bastaria, aunque tambien podrias restringir el peso de la imagen o el tamaño

talvez, esto te sirva un poco
http://www.forosdelweb.com/f18/como-...imagen-684375/
  #9 (permalink)  
Antiguo 21/06/2009, 08:14
 
Fecha de Ingreso: mayo-2009
Mensajes: 83
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Bajar peso archivo

Lo que necesito no es restringir el peso, sino que lo reduzca a la hora de subirla, he estado mirando el código de abimaelrc pero me temo que no entiendo casi nada ya que solo hace unas tres semanas que estoy en lo del php y solo entiendo cosas más sencillas.
Lo he mirado entero, lo he intentado entender pero nada...
Alguien me puede dar alguna solución más corta o sencilla?
  #10 (permalink)  
Antiguo 22/06/2009, 07:35
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Bajar peso archivo

Lo unico que tienes que hacer es

Código PHP:
    $imgTrans = new imageTransform();
    
$imgTrans->sourceFile "aqui_va_el_nombre_del_archivo";
    
$imgTrans->targetFile "aqui_va_donde_lo_quieres_redireccionar";
    
//Puedes escoger uno de los dos o los dos si quieres weight o height
    //$imgTrans->resizeToHeight = 200;
    //$imgTrans->resizeToWeight = 200;
    
$imgTrans->resize(); 
  #11 (permalink)  
Antiguo 05/07/2009, 05:13
 
Fecha de Ingreso: mayo-2009
Mensajes: 83
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Bajar peso archivo

Hola abimaelrc,

perdona por no responderte antes pero he decidido guardar las imágenes en el servidor como me recomendasteis y no en la base de datos y ahora estoy intentando recuperarlas para imprimirlas en la pantalla. Y luego pasaré a la reducción!
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 18:55.