Foros del Web » Programando para Internet » PHP »

Subida imagenes php

Estas en el tema de Subida imagenes php en el foro de PHP en Foros del Web. Buenas de nuevo, os cuento: Tengo este código php que sube imagenes: Código PHP: if (isset( $_POST [ 'sube_imagen' ])) {       if( is_uploaded_file ( $_FILES [ 'fichero' ...
  #1 (permalink)  
Antiguo 16/08/2010, 11:42
 
Fecha de Ingreso: enero-2009
Mensajes: 86
Antigüedad: 15 años, 9 meses
Puntos: 0
Subida imagenes php

Buenas de nuevo, os cuento:

Tengo este código php que sube imagenes:

Código PHP:
if (isset($_POST['sube_imagen'])) {  
    if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) {
    
    
$str "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
    
$cad "";
    for(
$i=0;$i<12;$i++) {
    
$cad .= substr($str,rand(0,62),1);
    } 

    
$sepexplode ('image/',$_FILES["fichero"]["type"]); // Separamos image/
    
$extension=$sep[1];
      
// me verifica haya sido cargado el archivo 
        
$ruta_destino "images/";
        
$namefinal$cad.".".$extension//linea nueva devuelve la cadena sin espacios al principio o al final
        
$namefinalereg_replace (" """$namefinal);// linea nueva devuelve la cadena sin espacios entre palabtas
        
$rutacompleta$ruta_destino $namefinal
            
        if(
move_uploaded_file($_FILES['fichero']['tmp_name'], $rutacompleta)) 
                    {
                    
$dia date('d-m-Y');
                    
$hora date('G:i:s');
                    }  
        }
 } 
que va de escándalo, sube imagenes, las renombra, y te saca en la variable $rutacompleta, el nombre del archivo, la carpeta ubicada, el punto y la extension, hasta aquí genial, para insertar articulos va perfecto

ahora, quiero utilizarlo para editar articulos, es decir que muestre ya una imagen, al pinchar un boton borra esta imagen (cambia el src) y vuelva a hacer el proceso de subida (el codigo superior), el tema es, que con el mismo código, que es este:

Código PHP:
if (isset($_POST['sube_imagen'])) {  


    if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) ;{
    
    
$str "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
    
$cad "";
    for(
$i=0;$i<12;$i++) {
    
$cad .= substr($str,rand(0,62),1);
    } 

    
$sepexplode('image/',$_FILES["fichero"]["type"]); // Separamos image/
    
$extension=$sep[1];
      
// me verifica haya sido cargado el archivo 
        
$ruta_destino "images/";
        
$namefinal$cad.".".$extension//linea nueva devuelve la cadena sin espacios al principio o al final
        
$namefinalereg_replace (" """$namefinal);// linea nueva devuelve la cadena sin espacios entre palabtas
        
$rutacompleta$ruta_destino $namefinal
            echo(
$rutacompleta);
                    if(
move_uploaded_file($_FILES['fichero']['tmp_name'], $rutacompleta)) 
                    {
                    
$dia date('d-m-Y');
                    
$hora date('G:i:s');
                
                    }  
        }
 } 
al mostrar $rutacompleta como antes, no me muestra la extension del archivo, me muestra: la ruta,el nombre y el punto, tal como así:

images/O7YBb0R1TvJu.


He pensado, que quizás sea por algo de los archivos temporales, que primero arranca con una imagen y luego quiero que muestre otra, pero aún asi el valor deberia de mostrarmelo, un saludo y gracias de antemano!
__________________
"Si puedes rellenar un implacable minuto, con 60 segundos de combate bravio..."

www.ixiasoluciones.com
  #2 (permalink)  
Antiguo 16/08/2010, 12:57
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Subida imagenes php

eso se debe a la caché del explorador, tendrás que crear un script php para dumpear la salida de la imagen y expirar la caché con los headers:

imageexpire.php:
Código PHP:
Ver original
  1. <?php
  2. //expirado la caché para imágenes
  3. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching
  4. header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . " GMT" );
  5. header("Cache-Control: no-cache, must-revalidate" );
  6. header("Pragma: no-cache" );
  7. $imagen =  $_GET['img'];
  8. if(file_exists($imagen)){
  9.     //obteniendo la información de la ruta:
  10.     $info=pathinfo($imagen);
  11.     //especificando el tipo de salida:
  12.     header("Content-type: image/".$info['extension']);
  13.     readfile($imagen);
  14. }else{
  15.     header("Content-type: image/png");
  16.     $im = @imagecreate(100, 50);
  17.     $background_color = imagecolorallocate($im, 255, 255, 255);
  18.     $text_color = imagecolorallocate($im, 233, 14, 91);
  19.     imagestring($im, 1, 5, 5,  "No Existe la Imagen", $text_color);
  20.     imagepng($im);
  21.     imagedestroy($im);
  22. }
  23. ?>

de esta forma, siempre se cargará la ultima imagen sobreescrita:

<img src="imageexpire.php?img=imagenx.jpg" />
  #3 (permalink)  
Antiguo 17/08/2010, 08:54
 
Fecha de Ingreso: enero-2009
Mensajes: 86
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Subida imagenes php

tu crees que es por eso?
pero aún, asi, porque no me muestra la extension del archivo que estoy subiendo? todo debido a lo mismo?


Cita:
<input type="text" name="rutaimagen" value="<?php if($pasada==0){echo($datos[$i]['imagen']);}else{echo($rutacompleta);} ?>" size="50">
ese es el codigo que extrae la ruta de la imagen, pasada es una variable de 0 o 1, que muestra si esta vacio o no el campo. Si es que si muestra los datos del formulario, si es que no, muesta el valor de la variable $rutacompleta.

el problema está, en que no llega a generar el valor ruta completa,

Cita:
if(is_uploaded_file($_FILES['fichero']['tmp_name'])) ;{

$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw xyz1234567890";
$cad = "";
for($i=0;$i<12;$i++) {
$cad .= substr($str,rand(0,62),1);
}

$sep= explode('image/',$_FILES["fichero"]["type"]); // Separamos image/
$extension=$sep[1];
// me verifica haya sido cargado el archivo
$ruta_destino = "images/";
$namefinal= $cad.".".$extension; //linea nueva devuelve la cadena sin espacios al principio o al final
$namefinal= ereg_replace (" ", "", $namefinal);// linea nueva devuelve la cadena sin espacios entre palabtas
$rutacompleta= $ruta_destino . $namefinal;
en la variable "·$extesion, esta ya vacía, no coge el valor que se le manda.

he pensado hacer lo de manera secuencial, es decir coger la function ponerlo en un archivo externo, y enlazarlo, pero no sé hasta que punto será esa la solucion

gracias por la respuesta
__________________
"Si puedes rellenar un implacable minuto, con 60 segundos de combate bravio..."

www.ixiasoluciones.com
  #4 (permalink)  
Antiguo 18/08/2010, 14:31
 
Fecha de Ingreso: enero-2009
Mensajes: 86
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Subida imagenes php

definitivamente, esto es debido por los archivos temporales, la solucion que me aporta maycolalvarez, supongo que es la buena, pero no se implementarla XD

mas que ná, porque el valor de mi img src="..... lo cojo a traves de javascript que lo igualo al valor de un campo, no hay ninguna orden que limpie la caché y los archivos temporales?
__________________
"Si puedes rellenar un implacable minuto, con 60 segundos de combate bravio..."

www.ixiasoluciones.com

Etiquetas: imagenes, subida
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 15:42.