Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/06/2009, 09:03
Info23
 
Fecha de Ingreso: mayo-2009
Mensajes: 83
Antigüedad: 15 años
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!