Foros del Web » Programando para Internet » PHP »

Upload archivo

Estas en el tema de Upload archivo en el foro de PHP en Foros del Web. A ver, estoy creando un foro, y el usuario, al registrarse, puede optar por registrar un avatar de su pc, de internet, o no registrar ...
  #1 (permalink)  
Antiguo 30/04/2008, 11:50
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Upload archivo

A ver, estoy creando un foro, y el usuario, al registrarse, puede optar por registrar un avatar de su pc, de internet, o no registrar ningun avatar, dejando los dos campos de los dos tipos de avatares en blanco...

La cosa es... ¿Cómo controlo q el input file "es null o blanco"? xq el del avatar por url, es facil, xq es un input text, pero no me manejo bien con los inputs file... a ver si alguien me puede ayudar

una solucion q se me ocurrio, fue crear un hidden en el formulario, sin value, y en el onClick de los dos inputs para el avatar se ejecutara una funcion q le diera valor a ese hidden. Pongo el codigo:

Código HTML:
// HTML
<FORM name="formRegister" ...>
<INPUT type="hidden" name="tipoavy" />
<INPUT type="file" name="avyfile" value="" onClick="setAvatar('file')" />
<INPUT type="text" name="avyurl" value="" onClick="setAvatar('url')" />
...
</FORM> 
Código:
// JavaScript
function setAvatar(tipo)
{
    document.formRegister.tipoavy.value = tipo;
}
alguna idea de xq falla? alguna otra sugerencia? alguna respuesta para mi primera pregunta?

Gracias ;)
  #2 (permalink)  
Antiguo 30/04/2008, 12:05
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Re: Upload archivo

yo haría algo así
Código HTML:
<script language="javascript">
function verifica(){
  with(document.formRegister){
     if(avyfile.value=="" && avyurl.value==""){
         alert("debe seleccionar un avatar");
         return false;
     }
     else
        return true
  }
}
</script>
<FORM name="formRegister" onsubmit="return verifica()">
<INPUT type="file" name="avyfile" value="" onClick="setAvatar('file')" />
<INPUT type="text" name="avyurl" value="" onClick="setAvatar('url')" />
...
</FORM> 
espero y te de una idea.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 30/04/2008, 12:19
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Upload archivo

pero el avatar no es obligatorio rellenarlo y lo kiero validar por php, no por javascript... gracias de todas formas ;)

PD: por cierto, el javascript q escribi mas arriba ya me funciona, aora me keda probar el php... xq aora si me reconoce el tipo de avatar q kiero, pero si uso el avatar de tipo file me salta un error "500 Internal Server Error" ... alguien sabe xq salta este puñetero error? (para el q lo pregunte, mi servidor permite subidas de 50MB)... Necesito ayuda con esto, xq es mi proyecto integrado y tengo asta principios de junio, y llevo un mes y solo tengo el main del foro, el login con cookies, el logout y un archivo de logs... TT^TT... ayuda por favor TT^TT
  #4 (permalink)  
Antiguo 30/04/2008, 12:28
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Re: Upload archivo

lo puse de esa forma por ser una idea, sin embargo puedes hacer que no sea obligatorio,
y para el caso de php puedes usar
Código PHP:
if(empty($_FILES['fichero']['name'])){
die(
"no existe el archivo");//o el mensaje que quieras

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 30/04/2008, 13:47
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Upload archivo

a ver... en q unidad se expresa el MAX_FILE_SIZE??? o.o

cuando ago un if ($_FILE["avatar"]["size"] > MAX_FILE_SIZE) ....... En q unidad esta el MAX_FILE_SIZE? en bits? en Bytes? en KB? :S

es q creo q puede ser ese el problema del 500 Internal Server Error...

por cierto, alguien sabe si hay alguna funcion contraria al copy o al move_uploaded_file, q en vez de copiar, borre? o.o

Gracias de nuevo por vuestro tiempo
  #6 (permalink)  
Antiguo 30/04/2008, 14:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Upload archivo

MAX_FILE_SIZE es una directiva para controlar directo en la forma el tamaño del fichero, no la puedes controlar vía PHP, tienes que definir una variable nueva y por ahi comparar el tamaño:
Código PHP:
$maxsize 200000;
if( 
$_FILE["avatar"]["size"] > $maxsize ) {
      die( 
"Error, mayor a $maxsize" );

El valor del arreglo $_FILE["avatar"]["size"] te da el tamaño en bytes.

Saludos.
  #7 (permalink)  
Antiguo 30/04/2008, 15:20
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Upload archivo

vale, creo q ya tengo bien todas las comprobaciones, pero me sigue saltando la 500 internal server error....

Alguien sabe xq salta esto aora?

--------------------- EDIT ------------------------

os dejo el codigo de mi clase, xq es q estoy ya borracha y no me salen mas q 500 internal server errors por todas partes

Código PHP:
// Clase CreateUser.php
...
if (
is_uploaded_file($_FILES["avyfile"]["tmp_name"]))               {
        echo 
"2a-";                        
       
$this->error checkAvatar();
... 
Código PHP:
// Funcion chekAvatar()
function checkAvatar()
{
      
$error null;
      
      
/***** Comprobando validez del formato *****/    
      
$formatos = array (
                    
=> "bmp",
        
=> "jpeg",
        
=> "gif",
        
=> "png",
    );
                            
      
$formato $_FILES["avyfile"]["type"];
                    
      
$size count($formatos);
      
$cont 0;
                    
      while ((
$cont $size) && ($error == null)) 
      {
             
$format $formatos[$cont];
             
$formato substr($formatostrpos($formato$format), strlen(formato));                                  
             if (
$formato != $format)
             {
      
$error "El formato del avatar no es un formato v&aacute;lido.";
             }
             else
             {
       
$error null;
             }
      }        
      
/*******************************************/
    
                
      /***** Comprobando validez del tamaño *****/
      
if (($_FILES["avyfile"]["size"] > 1000) || ($_FILES["avyfile"]["size"] == 0))
     {
            
$error "El avatar es mayor de 100KB.";
     }        
     
/******************************************/
                    
                    
     /***** Comprobando validez de las proporciones *****/
     
$proporciones getimagesize($_FILES["avyfile"]['tmp_name']);
     
$width $proporciones[0];
     
$height $proporciones[1];
                    
     if ((
$width != 95) || ($height != 95))
     {
            
$error "El tama&ntilde;o del avatar es mayor de 95x95 p&iacute;xeles.";
     }
     
/***************************************************/
                    
     
if ($error == null)
     {
           
$error true;
     }

     return 
$error;     

A ver si veis q es lo q falla xq yo ya no se q acer

Última edición por Masane; 30/04/2008 a las 15:51
  #8 (permalink)  
Antiguo 30/04/2008, 16:19
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Re: Upload archivo

creo que la coma al final de esta linea 3 => "png",

pero yo lo resumiría así:
Código PHP:
$formatos = array ("bmp","jpeg","gif","png");
$formato $_FILES["avyfile"]["type"];
$error=null;
if(!
in_array($formato,$formatos)){
       
$error "El formato del avatar no es un formato v&aacute;lido.";
}
return 
$error
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #9 (permalink)  
Antiguo 01/05/2008, 14:01
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Upload archivo

Gracias amigos, ya me funciona el tema. Por fin sube imagenes como dios manda

muchas gracias a todos, me estan ayudando mucho
  #10 (permalink)  
Antiguo 01/05/2008, 14:08
Avatar de Darth_Carl  
Fecha de Ingreso: mayo-2008
Ubicación: En Foros DWP
Mensajes: 160
Antigüedad: 15 años, 11 meses
Puntos: 8
Re: Upload archivo

La verdad es que eres un poco complicado... ¿No es más fácil el phpBB o el SMF?
  #11 (permalink)  
Antiguo 01/05/2008, 15:32
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Upload archivo

Lo es si no sabes programar y no necesitas hacer uno como proyecto integrado, si no, no te sirven XDDDD

Y no es q sea "complicado", es q soy "complicada"
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 10:27.