Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/05/2015, 02:09
tanatos_neon
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 2 meses
Puntos: 7
Pregunta Copiar imagenes con fileuploader y ajustar tamaños

Buenos días gente.

Despues de horas y horas peleandome con este tema, os realizo la siguiente consulta.

Resulta que quiero implementar un Multiple Upload Files. Me he basado en Mini Ajax File Upload. Este http://tutorialzine.com/2013/05/mini...e-upload-form/

Funcionar funciona perfecto. Mi problema ocurre en la parte de php.

Este es mi codigo:
Código PHP:
<?
require("../bbdd/tabla.php");

$extension pathinfo($_FILES['imagen']['name'], PATHINFO_EXTENSION);
$origen $_FILES['imagen']['tmp_name'];

$mn_insert = new tabla('m_imagenes');
$mn_busca $mn_insert->Show();
$mn_assoc mysqli_fetch_assoc($mn_busca);
$auto_increment $mn_assoc['Auto_increment'];
$nombre "gal".$auto_increment.".jpg";


//POSTS
$carpeta '../test/uploads/';
$posicion '';
$muestra 5;
$ancho 300;
$alto '';
$gris false;
$thumb false;
$zona 0;


/* Funcion de maqueado */
function ajustamela ($origen,$alto,$ancho,$gris,$destino_archivo) {
    
$img ImageCreateFromJPEG($origen);
    
$compruebaimagen getimagesize($origen);
    
//averiguamos las medidas para la imagen
    
if (isset ($ancho) && $ancho >= $compruebaimagen[0]){    
        
$nuevo_ancho $compruebaimagen[0];
        
$nuevo_alto $compruebaimagen[1];
    }else if (isset (
$ancho) && $ancho $compruebaimagen[0]){
        
$nuevo_ancho $ancho;
        
//averiguamos el alto que corresponde
        
$alto_proporcion $compruebaimagen[1] * $ancho $compruebaimagen[0];
        
$nuevo_alto round($alto_proporcion);
    }else if (isset (
$alto) && $alto >= $compruebaimagen[1]){
        
$nuevo_ancho $compruebaimagen[0];
        
$nuevo_alto $compruebaimagen[1];
    }else if (isset (
$alto) && $alto $compruebaimagen[1]){
        
//averiguamos el ancho que corresponde
        
$ancho_proporcion $compruebaimagen[0] * $alto $compruebaimagen[1];
        
$nuevo_ancho round($ancho_proporcion);
        
$nuevo_alto $alto;
    }
    
    
//copiamos la imagen
    
$thumb ImageCreatetruecolor($nuevo_ancho,$nuevo_alto);
     
    
imagecopyresampled($thumb,$img,0,0,0,0,$nuevo_ancho,$nuevo_alto,ImageSX($img),ImageSY($img));
    (
$gris) ? imagecopymergegray($thumb,$img,0,0,0,0,ImageSX($img),ImageSY($img),$gris):'';

    
ImageJPEG($thumb,$destino_archivo,100);

}


//VERFICIAR FORMATO


    
if(isset($_FILES['imagen']) && $_FILES['imagen']['error'] == 0){
        
        
$destino_archivo $carpeta.$nombre;
        
$destino_archivo2 $carpeta.'thumbs/'.$nombre.'.'.$extension;
        if (
$extension=="jpg"){
            
ajustamela($origen,$alto,$ancho,$gris,$destino_archivo);
            (
$thumb) ? ajustamela($origen,$al_thumb,$an_thumb,0,$destino_archivo2):'';
$sigue true;
        } else {
            
move_uploaded_file($_FILES['imagen']['tmp_name'], $destino_archivo);
            
$sigue true;
        }
        echo 
'<script>destino = "'.substr($destino_archivo3).'";</script>';
    }
    
    
//verificamos si se ha copiado correctamente y si es asi, lo grabamos en la base de datos
    
    
if ($sigue){
            
//volcamos los datos
            
$datos '';
            
$datos .= 'muestra="'.$muestra.'",';
            
$datos .= 'zona='.$zona.',';
            
$datos .= 'nombre="'.$nombre.'",';
            
$datos .= 'ruta="'.$destino_archivo.'",';
            
$datos .= 'titimg="'.$titimg.'",';
            
$datos .= 'posicion="'.$posicion.'"';
    
            
$obj_insert = new tabla('m_imagenes',$datos);
            
//actualizamos la base de datos
            
$sql $obj_insert->Insert();
            try { echo 
'<span>Creado</span>'; }    catch(Exception $e) {echo $e->getMessage(); }
        
    } else { 
    exit;
    }
Pues bien, lo que he podido averiguar es que el fileuploader este, ejecuta el php por cada archivo subido, hasta ahi bien.

Si subo uno o 3 ficheros, sin problemas, todo perfecto.

El problema ocurre al subir más ficheros, pongamos 6 o 7 (teniendo en cuenta que este sistema esta pensado para subir en lotes). Pues me ocurre que la base de datos guarda esto:
Código:
	 	 
	Editar	Borrar	72	5	0	gal72.jpg	../test/uploads/gal72.jpg	 	 
	Editar	Borrar	73	5	0	gal73.jpg	../test/uploads/gal73.jpg	 	 
	Editar	Borrar	74	5	0	gal74.jpg	../test/uploads/gal74.jpg	 	 
	Editar	Borrar	75	5	0	gal75.jpg	../test/uploads/gal75.jpg	 	 
	Editar	Borrar	76	5	0	gal76.jpg	../test/uploads/gal76.jpg	 	 
	Editar	Borrar	77	5	0	gal77.jpg	../test/uploads/gal77.jpg	 	 
	Editar	Borrar	78	5	0	gal77.jpg	../test/uploads/gal77.jpg	 	 
	Editar	Borrar	79	5	0	gal77.jpg	../test/uploads/gal77.jpg	 	 
	Editar	Borrar	80	5	0	gal77.jpg	../test/uploads/gal77.jpg
Como veis, guarda correctamente en la bbdd, pero el nombre de la imagen no, lo repite. Y creo que se debe a que no deja finalizar el proceso de "ajustamela", por ello no graba el nombre correcto y ademas hay imagenes que no las termina de procesar correctamente.

La pregunta es, alguna idea de solución? o, se os ocurre como "bloquear" la función "ajustamela" hasta que finalice y posteriormente continue con el proceso?.

Gracias de antemano.
__________________
Manz Soluciones On/Off