Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/07/2008, 10:50
eduvi
 
Fecha de Ingreso: mayo-2008
Mensajes: 9
Antigüedad: 16 años
Puntos: 0
Subir imagenes AJAX (no AJAX) problema al Recargar imagen

Hola,

a ver si alguien me puede ayudar, y a ver si me explico.

Tengo una página en la que al seleccionar una imagen, se guarda en la ruta indicada, y al mismo tiempo se muestra en una capa.

Bien, hasta ahí no hay problema. El problema surge cuando, una vez que tengo una imagen seleccionada (mostrada en la capa), y quiero que sea otra, (bien por equivocación o por simplemente seleccionar otra), pues sube la 2º al servidor, pero en la capa sigue mostrando la misma. Antes no tenía problema, ya que renombraba la imagen a time(). con lo cual nunca se repetían los nombres de imagen, pero esto no me interesa ahora. Necesito renombrarla a un nombre fijo, pero ahí es donde surge el problema de que no muestra la 2ª vez que selecciono imagen.

No sé si me explico bien, de todas formas adjunto el código, por si alguien quiere ojearlo y echarme una mano.

Gracias de antemano.
Código PHP:

<script type="text/javascript">
    function resultadoUpload(estado, file) {

        if (estado == 0) var mensaje = '<img src="<?php echo $dir_imgs.DIRECTORY_SEPARATOR ?>/' + file + '">';
        if (estado == 1) var mensaje = 'Error ! - El Archivo no llego al servidor';
        if (estado == 2) var mensaje = 'Error ! - Solo se permiten Archivos tipo Imagen';
        if (estado == 3) var mensaje = 'Error ! - No se pudo copiar Archivo. Posible problema de permisos en server';

        //top es la base de toda la página (. y document el contenido y busca la capa indicada (ojo, las capas div son lógicas), no necesitas indicarle la jerarquia. 
        // sino pones .document te estás refiriendo al head, y así al contenido del body
        top.document.getElementById('nomimagen<?php echo $_GET["capa"?>').value=file;
        top.document.getElementById('div_imagen<?php echo $_GET["capa"?>').innerHTML=mensaje;
    }
</script>
</head>
<body>
<?php
    
//    Script Que copia el archivo temporal subido al servidor en un directorio.
    
$tipo substr($_FILES['imagen']['type'], 05);

    
//    Definimos Directorio donde se guarda el archivo
    
$dir addslashes(implode(DIRECTORY_SEPARATOR,explode("/",dirname($_SERVER['DOCUMENT_ROOT'].$_SERVER['SCRIPT_NAME']))).DIRECTORY_SEPARATOR.$dir_imgs.DIRECTORY_SEPARATOR);
    
//    Intentamos Subir Archivo
    //    (1) Comprobamos que existe el nombre temporal del archivo
    
if (isset($_FILES['imagen']['tmp_name'])) {
        
//    (2) - Comprobamos que se trata de un archivo de imagen
        
if ($tipo == 'image') {
            
//    (3) Por ultimo se intenta copiar el archivo al servidor.
            //consulta el id_ejercicio para establecer el nombre de la imagen
            
require_once ('./includes/configuracionBD.php');
            
conexion_BD();
            
$sql="SELECT max(id_ejercicio)+1 FROM EJERCICIO";
            
$result mysql_query($sql);
            
//devuelve una fila de datos en un array
            
$array mysql_fetch_row($result);
            
//con $nuevoNombre = time."jpg" sí que se refresca la imagen al seleccionar un nuevo archivo.
            //pero con $nuevoNombre = $array[0]."jpg" NO.
            
$nuevoNombre $array[0].".jpg";
            
$nuevoNombre2 time()."-2.jpg";
            
//intento redimensionarla nuevoNombre2, con lo cual para cada imagen guarda 2, una redimensionada y otra que no
            
redimensionProporcional($_FILES['imagen']['tmp_name'], $dir.$nuevoNombre2,100,0.5 );
            if (!
move_uploaded_file($_FILES['imagen']['tmp_name'], $dir.$nuevoNombre)){
                echo 
'<script>resultadoUpload (\'3\', \''.$nuevoNombre.'\');</script>';
                
$nuevoNombre="nada.jpg";
            } else { 
                echo 
'<script>resultadoUpload (\'0\', \''.$nuevoNombre.'\');</script>';
            }
        } else {
        echo 
'<script>resultadoUpload (\'2\', \''.$_FILES['imagen']['name'].'\');</script>';
        }
    } else {
    echo 
'<script>resultadoUpload (\'1\', \''.$_FILES['imagen']['name'].'\');</script>';
    }