Foros del Web » Programando para Internet » Javascript »

Subir imagenes AJAX (no AJAX) problema al Recargar imagen

Estas en el tema de Subir imagenes AJAX (no AJAX) problema al Recargar imagen en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/07/2008, 10:50
 
Fecha de Ingreso: mayo-2008
Mensajes: 9
Antigüedad: 15 años, 11 meses
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>';
    }
  #2 (permalink)  
Antiguo 08/07/2008, 11:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Subir imagenes AJAX (no AJAX) problema al Recargar imagen

Tema trasladado a Javascript.
  #3 (permalink)  
Antiguo 02/08/2008, 16:33
 
Fecha de Ingreso: agosto-2008
Mensajes: 4
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Subir imagenes AJAX (no AJAX) problema al Recargar imagen

Con modificar esta línea:
if (estado == 0) var mensaje = '<img src="<?php echo $dir_imgs.DIRECTORY_SEPARATOR ?>/' + file + '">';

para que quede así:
if (estado == 0) var mensaje = '<img src="<?php echo $dir_imgs.DIRECTORY_SEPARATOR ?>/' + file + '?'+Math.random()+'" />';

Debería funcionar. El problema es el caché de imágenes del navegador, creo.
Un saludo.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:34.