Foros del Web » Programando para Internet » PHP »

comprobar si existe la imagen q voy a subir en el servidor...

Estas en el tema de comprobar si existe la imagen q voy a subir en el servidor... en el foro de PHP en Foros del Web. Buenas, tengo el siguiente codigo para subir una imagen en el servidor.. estoy haciendo la comprobacion para q no me pongan 2 fotos con el ...
  #1 (permalink)  
Antiguo 05/10/2005, 06:23
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
comprobar si existe la imagen q voy a subir en el servidor...

Buenas,
tengo el siguiente codigo para subir una imagen en el servidor..
estoy haciendo la comprobacion para q no me pongan 2 fotos con el mismo nombre... xo siempre me dice q si q existe el archivo... el codigo q tengo es el siguiente:

Código PHP:
$nomfoto=$_FILES['userfile']['name'];
$tipofoto=$_FILES['userfile']['type'];

$nomf=$nomfoto.".".$tipofoto;
if(
is_file($nomf)==true){            
    
$str_upd "sentencia Update";
    
$result execSQL($str_upd); 
    print 
"<pre>"
    if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
    print 
"El archivo fue subido con éxito"
    print 
"Información del archivo:"
    
print_r($_FILES); 
    } else { 
    print 
"El archivo no se pudo subir, información:\n"
    
print_r($_FILES); 
    } 
    print 
"</pre>"
}else{
echo 
"<script language=JavaScript>alert('El nombre del archivo ya existe, modifique el nombre y vuelva a intentarlo');</script>";

Gracias de antemano,
Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #2 (permalink)  
Antiguo 05/10/2005, 06:37
 
Fecha de Ingreso: julio-2005
Mensajes: 38
Antigüedad: 12 años, 4 meses
Puntos: 0
Buenos días

no se si habrás visto que en la condición le dices que si no es un archivo te saque el mensaje de que existe

Saludos
  #3 (permalink)  
Antiguo 05/10/2005, 06:42
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
xo ponga komo lo ponga siempre me devuelve el mensaje... es decir.. si en el if(is_file....)==true{sacame msg}else{ sube arcchivo} me pasa lo mismo...

y si no es esta la sentencia q busco... komo seria la correcta?

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #4 (permalink)  
Antiguo 05/10/2005, 07:03
 
Fecha de Ingreso: julio-2005
Mensajes: 38
Antigüedad: 12 años, 4 meses
Puntos: 0
Buenas sergi

El fallo está en:

$nomfoto=$_FILES['userfile']['name'];
$tipofoto=$_FILES['userfile']['type'];

$nomf=$nomfoto.".".$tipofoto;

Lo del tipofoto sobra

ya que si el type no guarda la extensión, en cambio la extensión si que está incluida en el name

Espero que te sirva .

Un saludo
  #5 (permalink)  
Antiguo 05/10/2005, 07:05
 
Fecha de Ingreso: julio-2005
Mensajes: 38
Antigüedad: 12 años, 4 meses
Puntos: 0
Es decir el type lo que tiene es:

WORD -> application/msword
TXT -> text/plain
Excel -> application/vnd.ms-excel

....
  #6 (permalink)  
Antiguo 05/10/2005, 09:02
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
sigue dandome el mismo problema...

te posteo el codigo entero a ver si puedes ayudarme:

Código PHP:
$uploaddir '/home/http/img/fotos/productes/'
$nomfoto=$_FILES['userfile']['name'];
$uploadfile $uploaddir $_FILES['userfile']['name']; 
$uploadcheck $uploadfile
if(empty(
$_FILES['userfile']['name'])){ 
$uploadfile "";} 

if(
is_file($nomfoto)==true){
$str_ins "INSERT INTO articles (nom_article,ingredients,caducitat,codi_grup_article,gluten,imatge)
VALUES ('$nom_article','$ingredients','$caducitat','$grup_article','$gluten','$nomfoto')"
;
$result execSQL($str_upd); 
print 
"<pre>"
if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
    print 
"El archivo fue subido con éxito"
    print 
"Información del archivo:"
    
print_r($_FILES); 
} else { 
    print 
"El archivo no se pudo subir, información:\n"
    
print_r($_FILES); 

print 
"</pre>"
}else{
echo 
"<script language=JavaScript>alert('El nombre del archivo ya existe, modifique el nombre y vuelva a intentarlo');</script>";

si el fallo es el is_file... q iria aki??? es q desconozco un poko este tema... y no lo tengo mucho x mano...

Gracias de antemano,

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #7 (permalink)  
Antiguo 05/10/2005, 10:42
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
alguna idea?
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #8 (permalink)  
Antiguo 05/10/2005, 11:01
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 12 años, 4 meses
Puntos: 0
Prueba con la funcion

// Funcion para verificar que el archivo existe

function existe_arch($nombre_archivo,$verif,$udir){
if ($gestor = opendir($udir)) {
while (false !== ($archivo = readdir($gestor))) { if ( $archivo == $nombre_archivo ) { $verif = "S"; } }
closedir($gestor);
}
return $verif;
}

donde :
$nombre_archivo = $HTTP_POST_FILES['user_file']['name'];
$verif="N";
$udir)"../archivos/";

Esta función lee el directorio completo y cambia a "S" la variable verif

Espero te sirva

Saludos.

Frank
  #9 (permalink)  
Antiguo 06/10/2005, 01:13
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
lo he provado xo o lo he exo mal o me da el mismo problema

te posteo el codigo q tengo puesto actualmente:

Código PHP:
    $uploaddir '/home/http/img/fotos/productes/'
    
$nomfoto=$_FILES['userfile']['name'];
    
$uploadfile $uploaddir $_FILES['userfile']['name']; 
    
$uploadcheck $uploadfile
    
    if(empty(
$_FILES['userfile']['name'])){ 
    
$uploadfile "";}
    
$verif="N";
    function 
existe($nomfoto,$verif,$uploaddir){
        if (
$gestor opendir($uploaddir)) {
        while (
false !== ($archivo readdir($gestor))) { if ( $archivo == $nomfoto ) { $verif "S"; } }
        
closedir($gestor);
        }
        return 
$verif;
    }    
    if (
$nomfoto==""){
        
$str_upd "UPDATE articles 
                    SET nom_article= '"
.$nom_article."',
                    ingredients = '"
.$ingredients."',
                    codi_grup_article= "
.$grup_article.",
                    caducitat = '"
.$caducitat."',
                    gluten= "
.$gluten."
                    WHERE codi_article = $codi_article"
;    
                    
$result execSQL($str_upd); 
    }else{
        
existe($nomfoto,$verif,$uploaddir);
        if(
$verif=="N"){            
            
$str_upd "UPDATE articles 
                SET nom_article= '"
.$nom_article."',
                ingredients = '"
.$ingredients."',
                codi_grup_article= "
.$grup_article.",
                caducitat = '"
.$caducitat."',
                gluten= "
.$gluten.",
                imatge='"
.$nomfoto."'
                WHERE codi_article = $codi_article"
;
            
$result execSQL($str_upd); 
            print 
"<pre>"
            if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
                print 
"El archivo fue subido con éxito"
                print 
"Información del archivo:"
                
print_r($_FILES); 
            } else { 
                print 
"El archivo no se pudo subir, información:\n"
                
print_r($_FILES); 
            } 
            print 
"</pre>"
        }else{
            echo 
"<script language=JavaScript>alert('El nombre del archivo ya existe, modifique el nombre y vuelva a intentarlo');</script>";
        }
    } 
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #10 (permalink)  
Antiguo 06/10/2005, 06:31
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 12 años, 4 meses
Puntos: 0
Ok... antes que nada un consejo.....las funciones te recomiendo las coloques en un script tipo config.php, con ello logras no duplicar el código donde lo utilices en cualquier parte de tus scripts, luego simplemente le pasas include("config.php") por ejemplo....

luego llamas la función colocando el valor verif previamente

$verif="N";
$verif=existe($nomfoto,$verif,$uploaddir);

OJO. el if previo debes cambiarlo de :

if(empty($_FILES['userfile']['name']))

a

if (!empty($_FILES['userfile']['name']))

para que te retorne TRUE si el nombre "No esta vacio"

espero te pueda servir

Saludos

Frank
  #11 (permalink)  
Antiguo 06/10/2005, 09:03
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
sigo con el mismo problema.. el nombre llega... todo funcoina correctamente, ahora si pongo para comprobar siempre me salta al else... exista o no el archivo... y en caso contrario lo mismo.. sube el archivo con el mismo nombre y lo sobreescribe!!!

en q me estoy equivocando????

no se me ocurre nada mas... xo bueno... ya saldra...

Gracias de antemano...

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 06/10/2005 a las 09:28
  #12 (permalink)  
Antiguo 06/10/2005, 09:43
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 12 años, 4 meses
Puntos: 0
Amigo, una duda.....

Cual es realmente el valor agregado del if ($nomfoto=="") ? tiene sentido hacer eso si no tienes nobre de archivo ? pudieses contaternar una variable con los campos que deseas actualizar y evitar lineas de código.... me imagino que lo que quieres es tener una opcion para grabar los datos aún cuando no tenga imagen registrada

Es bueno que los códigos los documentes

Puedes enviar el codigo como lo tienes ahora ?
  #13 (permalink)  
Antiguo 06/10/2005, 10:23
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
de momento no he tocado nada mas... el codigo es el q te puesto arriba...
Esto lo uso para actualizar los articulos de una pagina web.. los cuales se puede insertar una fotografia del producto o no... lo q kiero evitar es q me suban 2 fotos con el mismo nombre.. entonces 2 articulos pueden tener la misma foto y eso no seria correcto.. kiero evitar ese problema.. havia pensado de poner una time o un contador detras d la foto xo tmp me sirve ya q pueden subir la misma foto varias veces, y conociendo a mis usuarios... eso es peligroso...

el codigo de arriba es el q tengo ahora excepto el nomfoto=="" l tengo cambiado y tengo if(empty($_file[userfile][name]...

xo sigo teniendo el mismo problema...

Gracias por tu ayuda y haber si conseguimos sacar esto adelante....

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #14 (permalink)  
Antiguo 06/10/2005, 11:11
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 12 años, 4 meses
Puntos: 0
Te envié el codigo que a mi me funciona como mensaje privado... prueba y de dices

Frank
  #15 (permalink)  
Antiguo 06/10/2005, 11:11
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
al final todo se consigue... y muchas veces gracias a la ayuda desde aki agradezco muchoooo...

dejo mi codigo aki:
Código PHP:
    $uploaddir '/home/http/img/fotos/productes/'
    
$nomfoto$_FILES['userfile']['name'];
    
$uploadfile $uploaddir $nomfoto
    
$uploadcheck $uploadfile
    
    if(empty(
$_FILES['userfile']['name'])){ 
    
$uploadfile "";}

    if (
$nomfoto==""){
        
$str_upd "UPDATE articles 
                    SET nom_article= '"
.$nom_article."',
                    ingredients = '"
.$ingredients."',
                    codi_grup_article= "
.$grup_article.",
                    caducitat = '"
.$caducitat."',
                    gluten= "
.$gluten."
                    WHERE codi_article = $codi_article"
;    
                    
$result execSQL($str_upd); 
    }else{
            
// Ejecuta la verificación de que el archivo existe...
            
$ver_arch "N";
            
$ver_arch=existe_arch($nomfoto,$ver_arch,$uploaddir);
            
// Dependiendo de los valores anteriores se realiza la carga
            
if ($ver_arch == "S") {
            echo 
"<script language=JavaScript>alert('El nombre del archivo ya existe, modifique el nombre y vuelva a intentarlo');</script>";
            }
            else 
            {
                
$str_upd "UPDATE articles 
                SET nom_article= '"
.$nom_article."',
                ingredients = '"
.$ingredients."',
                codi_grup_article= "
.$grup_article.",
                caducitat = '"
.$caducitat."',
                gluten= "
.$gluten.",
                imatge='"
.$nomfoto."'
                WHERE codi_article = $codi_article"
;
                
$result execSQL($str_upd); 
                print 
"<pre>"
                if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
                    print 
"El archivo fue subido con éxito"
                    print 
"Información del archivo:"
                    
print_r($_FILES); 
                } else { 
                    print 
"El archivo no se pudo subir, información:\n"
                    
print_r($_FILES); 
                } 
                print 
"</pre>"
            }
    }
    
//funcion q busca si existe el archivo    
function existe_arch($nomfoto,$ver_arch,$uploaddir){
if (
$gestor opendir($uploaddir)) {
while (
false !== ($archivo readdir($gestor))) { if ( $archivo == $nomfoto ) { $verif "S"; } }
closedir($gestor);
}
return 
$verif;

Saludos y gracias
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
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 00:03.